Pipelines A Tenzir pipeline is a chain of operators that represents a dataflow.
Operators are the atomic building blocks that produce, transform, or consume
data. Think of them as UNIX or Powershell commands where output from one command
is input to the next:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1a2VLbSlx1MDAxMH3nKyjf1+DMrlHesNmSsFx1MDAwNVx1MDAwM1x03EpRQlx1MDAxYduKZUmRxnih8u93JFx1MDAxM21ekI2dmLr4XHUwMDAxrNm6p6e7z+mRXHUwMDFmt7a3K3Loi8qH7YpcdTAwMTiYhmNbgdGvvIvaXHUwMDFmRFx1MDAxMNqeq7pQ/Fx1MDAxY3q9wIxHtqX0w1x1MDAwZu/fXHUwMDFivl9NZ1VNrzueKVx1MDAxY9FcdTAwMTWuXGbV2H/V8/b2Y/w3IytcdTAwMTCmNNyWI+JcdHFXKlx1MDAwZfNi46nnxpJcdNYo5YzDZIBcdTAwMWTuKWlSWKq3aTihSHuipsrP+0+6vPl8cH5hWFx1MDAxN7d1p0nuXHUwMDFhvVRo03achlx1MDAxYzrjbVx1MDAxOWa7XHUwMDE3ZFRcbmXgdcRX25Jt1Vx1MDAwZlx1MDAwYu3JvNBTXHUwMDA2SGdcdTAwMDVer9V2RVx1MDAxOObmeL5h2nJcdTAwMTi1XHUwMDAxkLSObfBhO21cdTAwMTmop53skGhcbs48j4XXPcdcdTAwMGJcIuH/gPiTir83zE5L6eBa6Vx1MDAxOFNYxDLSMf3fW8qs21x1MDAxNnarLVUjy8hcdTAwMTKxYTFEnGCeXHUwMDE5XHUwMDFjXHTwP1rxXHR/z+7ctZ527vZcdTAwMWMn1Snq2C96RdYzMkc20IenuF87tq29bz/anea56bgo0T3nRkZcdTAwMTB4/UrS8+vd9HV/XHUwMDBml2Ig81x1MDAwYo0l3lx1MDAxY9dcdTAwMDPeXHUwMDBlr+nxV+/w28nNcMh3QWbZp2/pRnu+ZYx9XHUwMDBlMo1cdTAwMTGic8KRjpJ+x3Y7RVx1MDAxYjie2UnddCuj7+NWXHRtknWmbmbsNpxVad5vXHUwMDEwmDhzXHJPXHUwMDFlOZrnkatwuEXiXGbNijPLk5HRl1xutFx1MDAwNVx1MDAxZPbJ8SHEQENcdTAwMDTQ1KxpmoLarDTFdUwgXCJamTRVXGaNnFx1MDAxYS/3s9RtXCJ3UUY880VgSHVM6dl4rmzYI1x1MDAxMUvJtVx1MDAxZVx1MDAxOF3bXHUwMDE55qxcdTAwMWIts+vYrchcdTAwMDBcdTAwMTVT6SyCXFxcbpe2goNkQNe2rGyOvzdCoXSORZGk1VSiXGbVXHUwMDFhfCyTsr3Abtmu4VxcXHUwMDE2NzQ1pEpcdTAwMDGOhmadJCTK7pxcdTAwMDJa4iTH0WtcdTAwMWacXHUwMDFhXHUwMDA33/YvdyRcdTAwMDadU3NcdTAwMTBe3dWvN1x1MDAxZHAg2ii80TjEXHUwMDA0IJa6yOvCm/G6WoA+9a1a6LGjg3t0PFx1MDAxYfG9XHUwMDFke604dvdwcX3V87VTRzO/XGb2mu2bm/blX8Ox6dqUwDGI8Vx1MDAxYo6tXHUwMDE2xzDFXHUwMDFh01G6elx1MDAwNsYmXHUwMDFhk+RcdTAwMDexTlx1MDAwMVx1MDAwNKmh32DsyVNKwNgzQLBcdTAwMWOMjVx1MDAxM8WUU1R2nVk0Ma5hXStcdTAwMGZh81x1MDAxM+KGQlx1MDAxOKqiQs7Aa8IwSDPZKUk9XHUwMDEzIKbKJVx1MDAwNWJcdTAwMTSsXHUwMDBlxOblbUpcdTAwMTlly1x1MDAwNFQojUDWbNey3ZbqTPHmd1x1MDAxNV+GlEWbM/zCKcTRZ/ZcItXBU1NcdTAwMDJsXHUwMDE14VrPXHUwMDBinVx1MDAxZkKLXHUwMDBidYxQ1r1u147y77lnu3JcIl9G1tiNgqwtXGar2KuUzvZVZGBcdTAwMTc4pVx1MDAxZi2aZ1x1MDAxY+m37dRJ4ofk+/d3U0fnPK0wYyv7fynSS2cmXGZcdTAwMDaQhiHUy9+y3I5+ujdcdTAwMTdcdTAwMTj02EdcdTAwMTme7ejgqqP5m54xVHRuXHUwMDEy6VVcdTAwMDZnXG5cdTAwMTRcdTAwMTlOcXGdrHf17HS8bv+SQvhlpKNG7+TMaT7oomvytbLeWmPUrFx1MDAwN1x1MDAxN1x1MDAwM+/SPGQ+XHJcdTAwMDZH9f7xX2O907UpwXpcdTAwMTVFe2O9q2W9iFx1MDAxMFxuXHUwMDE0h9VcdTAwMTeivVx1MDAxOHFONUbT65032vvkKiVo7zNQsGrayydu5pLqRVx1MDAwNVx1MDAxNGaUL/CyYH5O3FBcdTAwMThDmapuvbyXVbUyxJdcdTAwMDCGVeDR1eHY3yS+z3LQhG5O8FK4XHUwMDFj651cdTAwMWZBcyVGTPj1s96sn1x1MDAxNaa8nPZmiNfEXS9njHG8QKV8d+LDs/P9g1x1MDAxMdw7PMatw6F0XHUwMDFlNv6yl7LN4r1cdTAwMWFRXGJcdTAwMWSB41x1MDAxZuG9f56f7p/RW3Fyf73fhN2dXHUwMDEzLbzyO6f1xfgpQDhcdTAwMDN0L+Kn07UpwU+p9sZPV8xPXHUwMDE5J1x1MDAxYeLT2OlEW0JOsSpcdTAwMTOJqlx1MDAxNVdPTlx1MDAwMSaILOBkr5CcPpOvV01O9ZlXLJBrkDOV98qT0/mJa0Oxhlx1MDAxMFTVXHUwMDAwYVx1MDAxNHDF0yj5c1e0gFBMdEhcIipK0miZTVuZ2lxy0TSW/vjoNdPWXHUwMDE3kcjciVx1MDAwMb5cdTAwMWONnVx1MDAxZmv/XHUwMDAzXHUwMDFhO8tcdTAwMDdcdTAwMGLTS1HaPFx1MDAxY2d+Klx1MDAwN2bWv4RcIqYq4FJv78ZcdTAwMTnG8380waXUxD0hXHUwMDBmjaPDXHUwMDAzrl/trjjDvFx1MDAwNGVnXFzj8qraKCu+/Vx1MDAwMbBKozdftKDJYlx1MDAxOYYjU4diMsOQKYUwmqS2XGLqKqdcdTAwMDCcnsE6c8rSt0tcdTAwMGLDdGSbPUNcdTAwMWHPwW9cdTAwMGXSXHUwMDFk0ZRzXHUwMDAwXXqZa6I8buf2UFx1MDAwNOlYj+WCh86uXHUwMDA1KadcdTAwMDTpXHUwMDAwlq9cdTAwMDW9PWnV/VZjp0tb3fpR7eGjtXuy8dGDKK5cdTAwMTJcdTAwMDb0bNW7OfFcdTAwMDM0pVx1MDAwMM6ewlx1MDAwYuNnXfezb1x1MDAxMTRRqEQ/N9Gz1c1zXHUwMDAxdNr8fN35od/i3dtcdTAwMWFcdTAwMWY2Rq1Bq0Y2PoCIKotcdFQuupFcYoRcdTAwMTkmXFzPsoS3XHUwMDAwWmtcdTAwMDBtPVx1MDAxMcKK4ftccqmskzDkyoMt+rUpJ9yMP9H8OPxcIkdcdTAwMTeRqVx1MDAxZn9t/fpcdTAwMGYxykNcbiJ9Operator Operator Operator Operator Data Data Data
There exist three types of operators: sources that produce data, sinks
that consume data, and transformations that do both:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1abVPbuFx1MDAxNv7Or2DYr41WR+/ab4UtLZRtu0Bvae/sMCZ2XHUwMDEyLyY2tiFJO/z3PXaI7ThcdCGtU7L34lx1MDAxOUhcIsnSsXSe5zxH1ret7e2ddFx1MDAxNHk7v23veMO2XHUwMDEz+G7sXGZ2XmTlt16c+GFcdTAwMWarWP47XHRv4nbespemUfLbr786UUTKu0g7vFx1MDAxYd/pXHUwMDA13pXXT1x1MDAxM2z7X/y9vf0t/19cdTAwMTkr8Pte3jYvrYxkTL30XdjPR5WgpVx1MDAwNm5k0cBPfseRUs/F2o5cdTAwMTMkXlnj5mZeyH19PTw78lx1MDAwZYedw/NcdTAwMTPH1yejctSOXHUwMDFmXHUwMDA0J+koXHUwMDE4P5LT7t3EXHUwMDE1m5I0XHUwMDBlL71Pvpv2sFx1MDAxZWrlxX1JiFx1MDAwZl/eXHUwMDE1hzfdXt9Lkql7wshp++koK6O0KHX63byPsmSYtSBCgGbWMKNBciZEUZ11IFxmXHUwMDEwroSxlEpulOE1w/bCIIwzw36h+VWaduG0L7toX98t27Q9V7hO2WZw/7imtKnn+d1emo1cXJYlXj7n1nJcdTAwMDCltSoqsv6jXHUwMDAzN1/4v6qT0nfvJ6V/XHUwMDEzXHUwMDA0pUlZxauKs5T33ESuM15ZUFx1MDAwNlx1MDAxOOOgLJe2qEdcdTAwMDe6rHdcdTAwMTeE7cs5zpCkTpzu+n3X73frt3h9d0FN4CTpXnh15adoxofQ76f1XHUwMDE2eb8v4zhcdTAwMWP0PMed0/PCuijrrkRHdpXftkuHyH9cdTAwMTTf/3qxvLVY2lxcrdjeTLVnlNDqXHUwMDA1q1xyx4mUXGZBrLQx6MBcdTAwMTS8XHUwMDE2yJVcdTAwMWWwYu9W9fPuxWpEw0vD6kTDuULgUaZcdTAwMWZNNG9P7e3o6D211+lXQ4eHkYZdufFEo4BIaoEzLqiUVLBcdTAwMTmi0Vx1MDAxY1lcYklGKm0rPNQo06BcdTAwMTFAOUevMMKCLNn9XHUwMDAx4lx1MDAxMYpcdLDWllx1MDAxNq+HeLRmklx0TYUoo9Iz8UwuVmOGpyaqRZ6UW8eJppZcdTAwMDI1yjIlXHUwMDE08H8tcWldLy1cdTAwMTSS4oxRVlx1MDAwNsllvOV8eHt77p2ev/5cdTAwMWS6b9RoeHT0RdBN5y2GvCUoMKo1p6BcdTAwMDUt5ceEt5Q1XFwgrzE2Vf3kvFx1MDAwNVx1MDAwNlx1MDAwNFx1MDAxOEUrXCL3mbieiev/g7iEXFxIXFyMXHUwMDAyUFx1MDAwNK4sXHUwMDE5YVx1MDAxOXWdv/7zVMafXHUwMDA33Y+R6Vx1MDAwZSP2/uXewe6mU5dgjHBjXHUwMDAxUMBILeuCi1x1MDAxMiNNtthcdTAwMWOlTYVRms3splx1MDAwNXyZP1x1MDAxNrzFLdGCK8wuwWpDZUX4jWlcZvWi1YzK57zvKVlcZlxmYblsZ0Dxr1xm+3llfVxyl/XWQrUvhJVaXHUwMDFii3/IOaLa34xPLOtPT1vH2UO9saW9aWKMXHUwMDAwhbqfXCJcdTAwMGbCXHUwMDE0RVx1MDAwMsJcdTAwMDZQXHRcdTAwMThAo5FDuVkrv6XeMJ3Hb1x1MDAwMFx1MDAwYreukL1FlrBUcqhl/HaRyM9JeFx1MDAxY3W6XHUwMDFk/5LdXHUwMDBlguFua9gwv7lh5uONajNhicIl0CV5janNXHUwMDEwKo20XFz/XHUwMDE4q4F0nIvOLKtVpr6gMVZcdTAwMTlqzFvSYPy06EPrVl+KZ57KaEV7rsBbnbCfnvhfx4FxqnTfufKD0dTq5N6IU0NcYtmZKnxcdTAwMTn43X5cdTAwMWWPvc60v6Z+21x0iuo0jMraNlx1MDAwZeJg/I5cdTAwMGZmuCuM/a7fd4LTeVx1MDAwM2Yx/81k4oFUpv7CSbxcXFx1MDAxMWSL9F24slx1MDAwYmFlJDModNXjXHUwMDEzXHUwMDFleipcdTAwMGbdXHUwMDEzqlx1MDAwM7h+tSd2e2503GlvPKpaUEklcjxRTbhcdTAwMTWSXHUwMDAz+zE8XHUwMDE51rbgzeJJlY77XHUwMDAwnjhcdTAwMTXWUrN2PN3rXHUwMDAwRTmtetxa8XQyftnxUyFVXHUwMDFmc52oQr29MFppSZnA2X48rs7iv+mnXHUwMDAxZ6I1XHUwMDA02kvPPlx1MDAwZlx1MDAwMr6/8biSXHUwMDE4lrg1gtfDVeXOJlHFXHUwMDFmXHUwMDE1pYCjTaiaKu9gflx1MDAxNFaFwvlWfCuWLtp9c/Xy5Fx1MDAxZOvQT9fh17NzPTxqn1x1MDAxNbZP+ZKT6dqdouZuXCKXNlx1MDAwN7RZ/z9cdTAwMTeyUyOuXHUwMDEzsKwyj3XAXG7DOVx1MDAwMtaWydwywH50OY2cL1x1MDAwM791ffrh6n0w8NNIbzxgMdxcdTAwMTOtpGLTeFWSXHUwMDEyyS1Va4qGoOZkybPAzVSfolQ391biIdzKtvjQPd9vjXquXHUwMDE3vD5cdEYqXHUwMDFl2Vx1MDAwNnB7v3XIXHUwMDAwRNWv14rb09jpJ50wvnJSdOvk50J44eBNoHk89fPi7+LdMJBcbpWVhsrrrWVwfthcdTAwMTk2XHUwMDE2zlZcdTAwMTHFuFx1MDAxMlqCwJinp486qGybwGIj84NZ41wiXFxcdTAwMGJFKFxihlx1MDAwZT9cdTAwMWWez1G9QIFcYkPFtFx1MDAxMWPAI1x1MDAxNVx1MDAxOaZWUb8ljidcdTAwMWUy2fq4W1VcdTAwMTSXSaaueux3bo5VXGa7P7xz8Ig4kSO7fZNZ2aKEU1x1MDAwNjiNQuOCiHJzMJtcdTAwMTgnyqeS6DxKaTnz0D9tP24njf2xN1x1MDAxNi1cdTAwMWHdlWvxmk9zVb2/xShRwFx1MDAxOaqjpbvwrcX+mVdXXbPsa6v6uTItMcbqpVx1MDAwNS1xoylTelx1MDAwNVraj+lp/KV7MFxmL079fdW5XHUwMDExveN442mpJTVcdTAwMDHFXHUwMDE0qld0ZaSfMlx1MDAwZsqzXHUwMDAzsIQyRrnkXHUwMDFhs1+9JnIyfJZ3yleLnHBhtcDFoGBs5Vx1MDAxNeeYmbLoTY1cdTAwMDC2Slx1MDAwZdE4OUlDdVx1MDAxM+T0NDv362ZcbsmI5lnuOTlKVb3bXHUwMDEyS4XgUozXd1lfc5wlu+pu0lx1MDAxOEuoheJFXHUwMDFiaUGrMtNdxlx1MDAxMVx1MDAwZuefm8pcdTAwMTFSK2KQXHUwMDAzoJaKIORI9qI1i4BMKmpqJjXDXHKomzj2n1x1MDAxZN3CPNvAPIbQxHBqjLZSSkHp7DaDVmCEUnyVdKV5ikCp+12b5I/UL1x1MDAwZm9MVfRcdTAwMGIlzPLsmJuiXHUwMDAwyuL6Vd5/TVx1MDAwNFxmXHUwMDEwqSuR+39RvsjsUKDkylxuM3atqdeAXHUwMDA2/U5JYFx1MDAxM6da2t1CT82uXHUwMDE5XHUwMDFmXZGfXHUwMDE2n+2U9dJcdD2h0yEjPv6YwavUMX/uRt1zccs+yuP/vG3Z46ZcdTAwMTOrxo9cdTAwMTlkXHUwMDA3SpQ1yMNcdTAwMWPJXHUwMDE4eEnWk3NcdTAwMDZW4YRnW7xaremYwfdcdTAwMWOPQtWiXHUwMDA1z4xagZKej0c1zVx1MDAwMc/Ho1Z54MbOdZqFmZdcdTAwMDFcdTAwMGKM28efR9/7O+Hxxdfk8FV841784Xu96zdN7+42zlpcXFCiNTdWZ6qqXHUwMDFhecrz6EZKaynHpVx1MDAxMrZm2Fx1MDAxM/KWkpjPXHUwMDFiXHLPx9Gfaau4/q20tXV//45cdTAwMTNFJyn6XqGud259b7A7XHUwMDA3TJ38yl4w5KSX8YuXZ1x1MDAwYndbd/9cdTAwMDDiYlx1MDAwM9EifQ==... Source Sink Transformations
Polymorphic Operators Tenzir pipelines make one more distinction: the elements that the operators push
through the pipeline are typed . Every operator has an input and an output
type:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dW1faSlx1MDAxYr7vr3C5b1x1MDAwYnvOh96JLUpF5KCCfmsvV1xi4SAhIFx0oOy1//s3wdaESGiiqElcdTAwMWJcXLUymWQmk/d53sO8M/n3097evvMwMfa/7O1cdTAwMWL3umZcdTAwMGU6U22x/9ktn1x1MDAxYlN7MLbUIbT6bo9nU31Vs+84XHUwMDEz+8vff2uTSd47K6+PR49nXHUwMDFhpjEyLMdWdf+nvu/t/bv67WvLXHUwMDFjWMaq7qrUa4lLXHUwMDEyLK2MrVWrUFx1MDAwMCwkk1x1MDAxODzVXHUwMDE42F9VU47RUYe7mmlcdTAwMWLeXHUwMDExt2jfRp2eYT1cdTAwMWN362d1MKy0KGh+J16z3YFpNpxcdTAwMDdz1SN9OrbtXFxfc/S+V8N2puOh0Vx1MDAxY3ScvtuDQPnTufZYjYB31nQ86/Utw7bXzlx1MDAxOU80feA8uGXAu1x1MDAwNc3qra7hldyrb9hXwz1DXHUwMDEwXHUwMDEyaPtwbI6nbtvOVLPsiTZV4+31oK3pw57qhtV5qvdcdTAwMTdCom0wr87ix11cdTAwMTGvqb4x6PWd9TLbWFxyL1x1MDAxNVxcQFx1MDAwZVx1MDAxMXo64F5/UuqsXHUwMDFl8j/emE61kVFyz7BmpulcdTAwMWZcdTAwMTKr82NI1lx1MDAwZbTdXHUwMDAz33zy4l1qNuloj89cdTAwMTYyyVx1MDAxOESQYUK8XHUwMDAxVTI0XGZezlx1MDAxY+vDXHLiYDva1ClcZqzOwOpcdTAwMDVPMaxOyFx1MDAxMVOzncPxaDRwVDeq44HlXHUwMDA0a6yuezCdjlx1MDAxN31De3bT6sqhxybu5TyAuFx1MDAxZu+vPU9cdTAwMWNWX57+/ufzr2uTX1ZHIFx1MDAwZtY+JN75ZK09XHUwMDE0ob2X342v9if///99jkcsXHUwMDEwIFx1MDAxOcosgEiBqWCRiaXSXHUwMDE2zpmuW99ccnhwr01cdTAwMWH2Td26SVx1MDAwM7EgtntiXHUwMDExTFx1MDAxOHJcdTAwMTOxwDwnRFLOhVT/uNfjbTyjnlx1MDAwNcWSet3KeCaZPPNr3OdcdTAwMDJcdTAwMDJcdTAwMDDkXHUwMDFh0WCpXHUwMDBlY4ZcdTAwMDWDklx1MDAwYkBJPN6Jy1NcdTAwMWbDO1x1MDAxY8Fg6U/aXHUwMDExiFx1MDAxMskpj27PLFx1MDAxNsWL7v1ph51cZoFl4PqsfoRaIbTT1/T+bGqkinL+gob7s5VuNtLST8pcdTAwMTGRbFx1MDAxOYwlXHUwMDEzXHUwMDEww4xj0s8xMSmBxawvXHUwMDAy3Vk3nGC85nCeUsQhZlxcXGJcdTAwMDAogEZcdTAwMGXSj7GGWLgxRKnqXHUwMDFhXHUwMDEyUESmpYODXHUwMDA2nn8zzSW7MIvmYem03KOpcLNcdTAwMTBZpyYmXkVNoZZcdTAwMTDKXHUwMDBigqCr/zAg6sd98F5LT0yFXHUwMDAxzSs7VDKiNFx1MDAwM+Q+evhBXFxQqlx1MDAwN4NcdTAwMTRveM8mY67EMFdu62N2P89cdTAwMWXwjuCMYKiRoexpJlx0Q9F9m4vpqFxcXHUwMDE5XHUwMDAz0Ojz7pxf5lrtstDSgGZcdTAwMTZcYprw11x1MDAxOVx1MDAxYeF+XHLbYGU8MzIgUuOuzF6WRUySiFXC3kSxXCJIQ1x1MDAxNatQfq36gOhQPG9cdTAwMWG5Rm6kXddBXHUwMDFitCAlw+ZcdTAwMDKmXHUwMDExikppfSBcdTAwMTQpwpAynMUu/ywkhpu4jEslkVxmRve8yzo86Vx1MDAwZW1nNJ4sblx1MDAxNqeT4vx20kgjXHUwMDEyJfhQpchcdTAwMTGSWGZI/KOQiHC4TuSAXG5BeXRnU9S+89FyaeBjy+R654S062fdVFwi8Y2czYhIpFx1MDAxY3BcdTAwMDZlXHUwMDE2XHUwMDAz+4OQXGJ5qHWKpXJbXHUwMDAxotGB2GImbaPZtDvTSpdcYt1cdTAwMWR1h6VyXHUwMDFhgIhcdTAwMDNcdTAwMDHppEd9XHUwMDA0pZJjirOgT1x1MDAxMqH6YUFcdTAwMWYuQ1xyXFzBXHUwMDA1RiRcdTAwMGWYr8qUOrlW5bB+M69rXHUwMDE3J8urXHUwMDEzk6ZcdTAwMDLMQa1cdTAwMWHuaUae0CZAXHUwMDA3lL80U0bpVFwiISA4U61cdMRrlipcdTAwMTMhVVx1MDAwNodcdTAwMWHsnFx1MDAxMVx1MDAwZVx1MDAxMYkxOVSZWieyWazdXHUwMDFlXddv0VxyKeG7ajNccsxcdTAwMTKct95cdTAwMDWz7DRVXHUwMDA2XCLKXGIkPMuVSTzRZLkye1EsXHUwMDFhXHUwMDE06p5cYo6hO3PuXHUwMDA1jn7FO+OideWcXHUwMDFjXGYrXHUwMDA1XHUwMDAzkyNiaLqs1tKWK7OFc94pV0YoiFx1MDAwYpBNOP9cdTAwMDZcdTAwMTSTpcq4v2OTXHUwMDEyXGI1hlx1MDAxMESSXCJcdTAwMDFjsFx1MDAxMr+ossOr4vLcoFx1MDAwMFx1MDAxNVx1MDAxYVewcn+VjqCJWGemV2bxha5GiMZKXGIgrpxt7ptLzXgpMbyEMmJ6XHUwMDBmN02EJv1AxFQvsc8x+Fx1MDAxNS+dXozhKa5cdTAwMGXLs8LgqFW/aXUuh5U08Fx1MDAxMlx08FLSg7lcdTAwMTCqy1x1MDAxMIx9q9gy5kpcZnO9fTTXMe6djWgm4WhWXHUwMDA2hlTOIY5cdTAwMGVnszhvz8617mTQP7s5mmr1K3mfilx1MDAxYz6l1vOcKlAzZVkhN8Cxhm5cdTAwMGVAXkg18pwpd/hVQFx1MDAwZlxy8rK88E2TPSHb74k9Qllcbrg+dZ0mIHfHltNcdTAwMTgsV2YsWCstaqOB6Vx1MDAwZbY3viuhVYM2XHUwMDFm+5+2W3pgXHUwMDBletZKilRvjemaZDtcdTAwMDNdM58qOOOJd1RX7WhKr02fj8t4OuhccizNPN/YpqtcZo9/Plx1MDAxMphHvkdsXHUwMDFiK0355afBXHUwMDExXHUwMDE3gdtS9zhXdj7COHrY8/jiW+dw0W9fjaxTVlx1MDAxY+SgzZupSFx1MDAxOMJCKoJcdTAwMDPuXHUwMDFhPMGYXHUwMDBmZHHwJznU0cvwR0WeSlx1MDAxY1xygYRhIFx1MDAxOUjpTMuLINh+cFxm+70xXHUwMDE4aPRcckGIIVxulv5cdTAwMDQhXHUwMDExXG6GSOndyFx1MDAxOLw/dXCh1r0tLUuXmq63q5e3RZBcdTAwMDZcZlIg84D5oqHPsVx1MDAwN1x1MDAwMFxudMfnW3elQcjL4MdBXj2DSOiDlFxuzCGR6TRlX1x1MDAwND9jvurTO+Mv2OpbasHwXHI4JGaMcVx1MDAxOGO9KmvyauPrJVtcdTAwMWVcdTAwMDBzQMp2p1Gc4zRcdTAwMDBQSVWe+JXQY8hL5EWgXHUwMDBi76/zIFFiXHUwMDBmsExp6GvnSm+6XHUwMDFhqVTrPFx1MDAxZoFcdTAwMDZXb0FBXGJg0VeMkFlcdTAwMDHmjlx1MDAwMH6wYePw2rGv+2fFg1QgToFcdTAwMGJcdTAwMDY0nkTbXHUwMDAw915aTlx1MDAxOcNcdTAwMDKldVx1MDAwNmz3Su6t8PaOOlx1MDAwZYZnzimPXtk0sazMy+p4eVtr1lx1MDAwYlx1MDAwMPbIXHUwMDEwXHJn0mksUlx1MDAwMTku8lx1MDAwMVx1MDAxNcdcdTAwMTUwtqi4d1x0qzDEXHTiSP5BgNtcdTAwMTJXeSu47TysXHUwMDEyNk0heKhHpzhcdTAwMWYjzmGMeYrjSmVSNO5ZXHUwMDBlLYej2XCh9dryLlxyYKOBrVx1MDAwNjh7w2yyaHmqgFIkUbYsMpEzXHUwMDExr0rf2n1ealx1MDAxMtLDIJChVKLUNnXFOXqAVu/O+Ons2pF6oVV+ONTb184yLD8sWUxcdTAwMTLc5mBcdTAwMDdMXHUwMDEyqrVfkpeK2WptLUqng/qb81xuXHUwMDE0eUQpIFxiqSfkJjD5z4Zxs0yzrFXXZt6yl5JQg8LiLG+daVx1MDAxN6Xit1x1MDAxYbFqqDdq15tXs+bRbdLTVmNQ0julrUKEXHUwMDA1YTTb4y2RJPTGXHRiXCJmfS7zkmFMXHUwMDAwZIBI6W2m9Ni7PMCUYC5cYlx1MDAxMVRcdTAwMTFcdTAwMWOL1/zbktLU0J1HTG5yvcIntFx1MDAxMVx1MDAxMIhwXHUwMDE5I5a/vDtrfV9aJ43Te0P/Vlx1MDAxNq1SX9ppsJeCOfXbyFx0XHUwMDEzrFx1MDAxMfAyrytcdTAwMWExXHUwMDExTLl0dWWaeGmrXGKGRtkwXHUwMDBiXHUwMDEzP8kkUFx1MDAwNkGMTcm6s05tIXO1RrU5rts9aJ093PA0SF8wb5r5RWKH0sdxXjAsKWKYcbgx1IZpUFx1MDAxOCnEkiPxXHUwMDFihNrEWulTqM277s9QW8mazHzi+j7zt4FGg9E26nviXriNvlxmdSTUR1ZeXHUwMDE5UaaojM753ctyWVx1MDAxYmjgzDhcdTAwMDeofVO9mDcnLFxyqEProNu2WOE1oJM877I5XHUwMDAxXFxShVwisikh+Fx1MDAxOeggXHUwMDEwXHUwMDFjwbTuXHUwMDBi+Fwi0J3NnHDUvVWEO9joLlBcdTAwMTe+XHUwMDE3Q6iuU1xcTCjDNEaQu4euzDNcdTAwMDPdz44vbuyvXHUwMDBiUDip9c7TXHUwMDAwO1x1MDAxMsBdXHUwMDAyNmPAXHUwMDAyXHUwMDAySf2GbprQ9pv7gdlmXGavem9cdGKcXG5cdTAwMTLnhUiNpnN00zyz2oUpmDUqpaOH71x1MDAwYidccsxcdTAwMTI0o3fBLKEvRHpJ0Fx1MDAxYlx0xvjakquMZ1x1MDAxMsMzWdB7Q+1X0Vx1MDAxMlx1MDAwZs/ThpxiJYxxUmiK1cXJssCG1+hcdTAwMTL3WVx1MDAxZNBcXKdcdTAwMTe2R0xigt4xKOmdgt6EcaDckGziLYlcdTAwMWOULYredoO74iVcdTAwMDHCl1G6PjpcdTAwMDcsxq54x+doNFx1MDAxZlx1MDAxNk9ql+VF4+jO7FVrbJZcdTAwMDZzKZht9PHvj4SYQ6Vcclx0zVx1MDAxY7FcdTAwMDSSU+aIRdlcdTAwMTVvy6tpibL9XHSP8Vx1MDAwNslDelxuT1FrySadar1DXHUwMDBl6v2DiZVcbmp5g1fT7jT9XGJcdTAwMTJ3dpOBjGmSyDSZK7ah9quIicPw2DOmXHUwMDEyQ1x1MDAxMMNcdTAwMTPrXHUwMDFk31x1MDAxZTq15vygwVx1MDAxZYblwv3XlpiHvdg2MZ5YXGZKeq/0I1xiKeZEpHTV0G/OQZkrtu1cdTAwMDZ35or5oFx1MDAxMtxFmFDFyHGmxC5cdTAwMTQoza9cdTAwMTf69VU110Wj6rduXHUwMDA1p1wi/yM4JZaAdVx1MDAxZlJcdTAwMTAoXHUwMDAxy8JESeSmbN3Hj1Kf51x1MDAwNcODOlJJXHUwMDEyoizG1ljzy7tcdTAwMDLuz6uFwl2xcVx1MDAwNS+73FikYqe7YLx5XHUwMDE3TLLTKTBcYlx1MDAxOCCY+s3NjFhcdTAwMTJDLJnjtaH2q3hJ3XZcdTAwMTgtXHSssMBxjJn5XHUwMDAz7Y4sb5ujUvfq8PzhrDK6ZaCUdMcrXHUwMDA2Jb2T40VcdTAwMTGUmFxikVFQXHUwMDAyKShb9vHmlFx1MDAwNENj1Igjl/pjZP/eTGr2tCfg+LraupZa26idap00WErBeNArZ+ZDw9PRKElJXHUwMDE2XHUwMDAxad0mNGOkLFx1MDAxMrRcdTAwMTeVlVZcIrx57kxcdTAwMDRLn2hcdCh1zTiJwUt6hVx1MDAxY5/fXZx9tXKmxXPorr1oh83KJ8ZUylGel8pbXHUwMDE1gVx1MDAxZHdcdTAwMThCeVx1MDAwMOH6kp2d205008pcdTAwMDTxjKogI0hcdTAwMTJcZsGHmk9UiYs3XHUwMDE2McjKcsXvseqjnH76Ief72mTScFQz6uij1O7PXHUwMDA3xqKwgeu7q8/+p1x1MDAxZlLuSpPh9vjf/z79939cdTAwMTPs14gifQ==void bytes events bytes events void Input Output
When composing pipelines out of operators, the type of adjacent operators have
to match. Otherwise the pipeline is malformed. Here's an example pipeline with
matching operators:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2aa1PaTFx1MDAxNMff+ylcdTAwMWP6ttC9X/rO2yiIqFx1MDAxNevlmU4nwlxukZCkSVx1MDAwMMXxuz+bqFx1MDAwNCiRxGJLZoIjmN2zOZvl7M9z/snjxuZmKXhwVenrZkndt1xmy2x7xqj0OWxcdTAwMWYqzzdcdTAwMWRbd6Ho2HdcdTAwMDZeK7LsXHUwMDA2get//fLFcN1KPKrScvrPI5Wl+spcdTAwMGV8bfufPt7cfIzep3xZpq1cItuoNfYkXHUwMDA1mW9tOHbkXHUwMDE1MilcdTAwMTBDXHUwMDE0sYmF6e9qV4Fq6+5bw/JV3Fx1MDAxMzaVgivo4cG32nXX3rNZx/Ru/KPt2O2taVlnwYNcdTAwMTXNqOU5vl/uXHUwMDFhQatcdTAwMWJb+IHn9NSF2Vx1MDAwZbrhXGbm2idjfUevQDzKc1x1MDAwNp2urXx/ZozjXHUwMDFhLTN4XGLbXHUwMDAwmLRcdTAwMWF2JzpH3HJcdTAwMWZakPg4XHUwMDFjgVx1MDAwMJvzveNYjlx1MDAxN12jZ9i+a3h6veNcdTAwMTncXHUwMDE4rV5HT8NuT+w+ISRuXHUwMDE0i21GL1c15aqrzE43mG3zVbS8glx1MDAwMoSgfpt0hOd3q+3oS/5cdTAwMTGvqWf0VTVa/YtT2jvrIOvXdVxyXe/e7+LmrVGdWSW7/bJK9sCy4smHXHUwMDFke1MhXHUwMDE0n33gto3nr1tHXHUwMDAzY1x1MDAxMEHEXHUwMDE5iENGh1Vv/nSW0+otiFx1MDAxMD8wvGDbtNum3ZlcdTAwMWai7HZCj2X4wY7T75uBnsaJY9rBvEV03i3Pc0ZdZbRcdTAwMTecObHPXHJPXHUwMDE375nwXHUwMDE1/7VcdTAwMTlHSHQw+fvH5+XWZKk5XHUwMDAyXHUwMDE1MPNcItnGk1x1MDAxOX8ohb/3X82U9cb059PnbKzR0SOTYCMxXHUwMDA3klx1MDAxM1x1MDAxMof7MtZs7anG1v7Pw5GyfY/j44Mjdn6VXHUwMDBi1oDVs0YwoeRcItbAil5USTlcdTAwMTdS//J4xm+ghyCJKaVQXHUwMDE06MlcdTAwMWZ6lqOgPFx1MDAxN1x1MDAxM0DOsFx1MDAwN0vdjVx1MDAxOVx1MDAxNlxmSi5cdTAwMDAl2VCUXHUwMDE1Xf9cdTAwMDZFXHUwMDEyovnWV1x1MDAxMmFcblx1MDAxOMQw3lx1MDAxNctAhG6Bc3dVPe7f1a/qorl1SC/7Z1x0IOpcdTAwMWGt7sBTuYLQJ6jCnzdcdTAwMDG0XHUwMDEwVK9cdTAwMTBcdTAwMTKpXHUwMDEyXHUwMDFlJlxiRXIq2Sygk1x1MDAxYugs3/RcdTAwMTnNWUZ7McfA2eRcbmZzhyuUXCJcdTAwMGUx40JcdTAwMDBAXHUwMDAxVGVI/1x0poSE862vmEKIY1x1MDAwMTSlU3Nqd4xcdTAwMDbnvl3fcczxcL93fn80vlx1MDAxYeZcImFcdTAwMTIrZVViYZaOU1AyjHSqXG5cblLlg1QoY35UoCp8z5xRXHSchCohmeB6hqlJddTYNti4hz1L1OqHu6fBnjuq5oFU+Fx1MDAwM0o7XHUwMDAyWoDy98pIkEtcdTAwMDEgnV79glbrTKtCR0qjI7H55klaXHUwMDA0McGUXHUwMDAwmJ42u3tcdTAwMGb7/aPjMrssN5suPPk2XHUwMDFhnNTzQFx1MDAxYsRWT5tE0fo9QpLe61x1MDAxY1xigWi80Vx1MDAwYvisM3ygqCBKXHUwMDAxQVxihndcdTAwMWaQnFx1MDAxZVxys1xuQ4XQXHUwMDE05j6JkjdcdTAwMTSccFx0QIbE6PK0PTys1kajn/vV47NcdTAwMTPgXFx7nfK6S01cdTAwMTkw9ZekJshcdTAwMDGiXGLzKZGv4NI6c6ko4d66wNWJ4olqk1x1MDAxMJhcdTAwMTDCeXpVvFx0XHUwMDFisNapXHJcdTAwMWNWfzhcblx1MDAxYSOvP1x1MDAxY+fi9lx1MDAxY07/KEAqtSmpfkurNlx0QSjUXHUwMDFmXHUwMDA1qlxuVFx1MDAxNah6LVx1MDAwMbX3JFbhMHtlXHUwMDE5hHFcdTAwMTL8Ojs9KINhbbjzvXE3bsBhk+VcdTAwMDFV5Fx1MDAwM1xuwMQnXHRS4Urn8ZxQxoqnlvJBqz+qqFavLq1DxaZjJVx1MDAxMS1hsYr4lJyxXGYth0ZnXHUwMDE49L+fuP26t3Uj2sTtSz9cdTAwMTdoQatHS6KS/Vx1MDAxZW1JMEZcdTAwMDVnpLhcdTAwMGKXXHUwMDBm0lx1MDAxNNLSXHUwMDAy6z9cdTAwMDKVvvokTkHApWSYZCBV+aDXVOdcdTAwMTfnQ9c92Lvnd2V6Xkuq19ZGWspAqb8lLVx1MDAwMVx1MDAwZVx1MDAxOeY6XHUwMDA1KriUXHUwMDBiLn1wvSYy2nNZ0Vx1MDAxYlx1MDAxN1x1MDAxM1x1MDAwMPXXJadcdTAwMTSZ59lVXHUwMDAwplx1MDAwNHNBiKCaeSyb+4/lVFx1MDAxNNGLQIVk4u06XSlcdTAwMDCGMshKS/bKemKq/PvTlmDO+So5tVx1MDAwMFRcdTAwMTRUXHUwMDE45zpzRVTXxlJcbvpcdTAwMWK4qFx1MDAwMIRrSKQv3WY25aooRUj8Xy1cdTAwMDOl7DD2nk2fg3TjJchLhuueXHUwMDA12o3ufVx1MDAwZdnS0FSj7Vx1MDAwNfnpbfQqbbyEeFx1MDAxOEwqnPHj08bT//NcdTAwMWEwWCJ9
We call any void-to-void operator sequence a closed pipeline . Only closed
pipelines can execute. If a pipeline does not have a source and sink, it would
"leak" data. If a pipeline is open, the engine auto-completes a source/sink when
possible and rejects the pipeline otherwise. Auto-completion is context
dependent: on the command line we read JSON from stdin and write it stdout. In
the app we only auto-complete a missing sink with
serve
to display the result in the browser.
Zooming out in the above type table makes the operator types apparent:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2cW1Piylx1MDAxNsff51NYntchu++X/eblqCgoisqMp3ZZIVx1MDAwNMlcYkkmXHQq7vK7n5WoJFx1MDAwNILoiGNGscaBTne6071+/V+ru/HfLysrq9HIt1f/Xlm1byyz73RcdTAwMDLzevVrnH5lXHUwMDA3oeO5cIkkn0NvXHUwMDE4WEnOXlx1MDAxNPnh33/9Zfq+kZYyLG9wX9Lu21x1MDAwM9uNQsj7P/i8svJv8jtTV99x7SRvkprWRFx0zqfue25SK1x1MDAxNkIxLVx0ZuNcdTAwMWNOuFx0VUV2XHUwMDA3LnfNfminV+Kk1Wi4fuSdf7toXHJ8y1pfP/JcdN9EabVdp99vRqN+0lwiK/DCsNIzI6uX5lxio8C7tFtOJ+rFLcilj8uGXHUwMDFl9EBaKvCGXHUwMDE3PddcdTAwMGXDiTKeb1pONIrTXHUwMDEwXHUwMDFhp5ruRXKPNOUm6Yb0c1JCqlxc3Vx1MDAxYl7fXHUwMDBi4rr/g+34J629bVqXXHUwMDE30Fx1MDAwNLeT5lFC2Vqkea5cdTAwMWaeiFx1MDAxOIpcdTAwMTEskWZcdTAwMTQx+MF2JdO9Pdu56EVxc1x1MDAxMDdcdTAwMTTlWjDCXHUwMDE5lizTXHUwMDExdtL5mjDKXHRNi8ZccvCrncRcdTAwMDL+STs8MFx1MDAwN3Y1XHUwMDE5XHUwMDFh1Fxu7YPNqFNpuWf7tzt+XHUwMDEzXHUwMDFmX59OdKHbeehCd9jvp09cdTAwMTdf+G/GvtK7XHUwMDBm/Y55b1x1MDAwYlhoITDWSnGsx9fB5i7zt+t71uVcZvNcdCMziNZcdTAwMWS347hcdTAwMTf5XCK22ym40jfDaMNcdTAwMWJcZpxcYprR8Fx1MDAxYzfK50juu1x1MDAxNlx1MDAwNN51zzY7M+5cXHjNj2+XXHUwMDAyXHUwMDE1v9J3K6n5JFx1MDAxZsbv//k6M3dl7rjHr6lcdTAwMTFPb/kl+//d12fyLWgh39BcZoJcYuepqT/F9yk+9lx1MDAwZTyy0yb7/slxuLZcdTAwMWTcXGaDMvAt1CTfhC6HbybSesY0p0lcdTAwMGb0XG4sKSWMp1x1MDAxNz7xfdf4ZoY1V+BcdTAwMTfhlIVwwmSBmSSCLFxm58Ba71arl3L9/OhcXF2s741syzwqI5xcdTAwMTT/TjixwjBcdTAwMGIznvFcdTAwMDA+6fyQdMpC15ggjlx05YouLp0y3Gme967q1eHphu87Z2enP65pKenUv5NO8I5AOzVJp8VPOD8mnCyf+lxiJ4xcdTAwMDRGiomF0VTu4FqI2r5HXHUwMDA2tfaeWTk9POr4ZUSTLSlqXVx1MDAxME2tXGJEL/ozKP3gaJJir5ZKIcCr1YsvKdVo69SjnmCBf3I7XHUwMDFh6K16t6rKXHUwMDAwJ2PlWlLCXHUwMDA0gbBq+un2llx1MDAwNN/ft6ZEXHUwMDBi15SEkoRwRFx1MDAxNo9au7eW3j3/SUc3pkeOW97aRmXne1x1MDAxOfjmomx8K0I0QurTdf5cdTAwMDT8XHUwMDFl8Mi+iWZcdTAwMDGe1ee8c0001ihcdTAwMWJcdTAwMDM+XHUwMDA1uO1sj/o/ZPu77Tclv2EwkodcdTAwMDdlXHUwMDAwnHJmSM5cdTAwMTRcdTAwMTKaXHUwMDEzmNVE2inJXHI0M5SO41EhXHUwMDE50fpcdTAwMTfDYoYsxOUs39tQkk/zTtLWPFx1MDAwMo45xVx1MDAxY1GURj4lXHUwMDA3vOu5UdO5vV9xmUjdMlx1MDAwN04/WY1cdTAwMTgnJ8ZcZo905WXNIE5d6ztcdTAwMTduYl7QWjuYsPjIscz+OEPkZeI+XHUwMDBi6jFBXHUwMDAyg+pcdTAwMTTnXuBcXDiu2T+eWWesmzuP44RccpJcdTAwMTn30E5ENX6eXHUwMDE3kUmFyqeOfWutOWdCs8W1VzTOq5v1XHUwMDEwXHUwMDBmm4NK67DS2+7UtswyoFx0j1x0XHUwMDEzXHUwMDFm4lRzXHUwMDA1XHUwMDAxRWpcdTAwMDTPXHUwMDA1U0tskZeByZXBNV1cZk3KgVx1MDAwMabZxyazPYrs8K3RzFW6RDbZnK1WRSRcdTAwMTJcZpRzYTa3jqz2Ma5ccqX3Xa+57cb22t5+s1xmbHKlXHIkSMrFXHUwMDE0k1x1MDAxNCGSa06KXHUwMDFi6WqbsZchKZFBMVlMLGE0qGDyg4ulfZW06Y2ZzNe6TChZ8WKUJljBXHUwMDA0jlx1MDAxNlx1MDAxN8y6bdZu16NvXHUwMDAz3rxWdri7XHUwMDExXGZcIlFcdTAwMDYoXHSjXHUwMDA2y4pVYlx1MDAwZYxcdTAwMThSZ1481563XHUwMDE3SkykUpj+OXuvry6UQdJ3ZdZJzuZcdTAwMWNJ4lrDP7U4krdX4tSuho3GQLR0r35cZsGwWy9cdTAwMDWSRFx1MDAxOTgnk4wsTORb6STHkjLwoT91slAnl4XkXHUwMDFiyiTlJJ86ZpJcdTAwMGLOiVx1MDAxMs846+B8u6xfOsEtb+1cdTAwMWU099c2zVHV75aCSdCqnEhcdTAwMTLBXHUwMDE2XHUwMDE2ybdZ5lx1MDAxMZhcdTAwMTBcdTAwMThcdTAwMTHxsYmcs8yzLFx1MDAxZd9slYdk4sQ8jUjGcZTmi0eS21v22fX26V5jZ9Ps9Hq9m8bJzW5cdTAwMTloZPlcdTAwMWSWzHn3PHuUUZOh+excdTAwMTXtsEhqwPSmXHUwMDAxKSoknokhzVD/cNpcdTAwMDGjeGbEf8xphyyFalwidUxhOoyPXHUwMDE0Vl1/XHUwMDE4XHUwMDE1YLi08DFXaVx1MDAxZUSeMYKURP5CXHUwMDEyRT71kURcdTAwMWRbikB0cVx1MDAxMFx1MDAxZPu7/bPvNm5cdTAwMDM04rS2ed7ev10rXHUwMDAziNlcdTAwMWPJbDzn9PyvgKilwUFrXHUwMDE5kporrdisbc5cdTAwMTkgYkRcdOJ/5uLqwiRcdTAwMWVcZqNiXHUwMDE0l6WI+UpfXHUwMDAzxcC2onsznMUjK9z/IFxiJmSqn3Mmd7dXXHUwMDE5ubXBxVZ7u1Gv7rSO+u3t81x1MDAwMiBzUP02TeTUXHUwMDAw109hKlx1MDAxNEJcIjM9JWBCTEmx4FxmXHUwMDEzoIcqmWtXiiBKXvMx7XZtS+tcdTAwMTknXHUwMDEykDIgIMCEXHUwMDExzbTIeqJjTqF9XHUwMDA2Y1x1MDAxOFx1MDAxMJCKYaoz66yPX2FjiCnO5HJcdTAwMDT00axSw6JcdTAwMGYpd8U0j8ukpYs0XCJjRWeHJ8RUP2hv77xRPz78Xmt3r8jqON/dw7vXnCpepmWkcFdcdTAwMWZ8XHUwMDE5qlx1MDAxOJHP8CpnP3VcdMSMaWpgKTXWlPH4m1iT2/pUXHSDU8nAXHUwMDEzlIIjRYp9zkVcdTAwMThcIkS17Vx1MDAxOVJcdTAwMDeAXHUwMDFhXGacTlxmXHUwMDFlXHUwMDA2VCnJNEKZWGhcdTAwMWP6UUUpwn+k1GExkTpH6o5cdTAwMDPTXHK7XjAwI7DhXHUwMDE3715cZpxOJ6syk7r3lDjkpbCwUVx1MDAwYmlcImYv10Q5Z+2GYJBcdCye8S2yM3GGW6a9jV3ZcH60auGBW2m9N01khsSEKvBcdTAwMTFcdTAwMTHMW1wiNb3k3Fx1MDAwZcaGXHUwMDA0jVx1MDAwMu9cdTAwMWPHXHUwMDEyxHK7XHUwMDFlglx1MDAxYoJRXCJcdTAwMDWShEhEc+18XHUwMDFkjcRUXHUwMDFhSiFcdTAwMDBDI2CWpk825lx1MDAxYtqBNeNcXFx1MDAwYq1cdTAwMTVMzlNcbkkwRZLDtFxceonUODq3/F0l9Nb5t73Kce1o4+zoXHUwMDFkSqRkxVx1MDAxMiklVzg2qYVRmv3U71JcIudcdTAwMDPFXHUwMDExXHUwMDEwwyllWkmUOV90r5fgXGYyxMGOXHTB0ENLkUuBXGZEsVx1MDAwNlFcdTAwMTZcdTAwMTSp7HdM5silVCCuhP45J9pfpJbN5K+ILEsln5CLvEpONWbp6khl4Vx1MDAwMVx1MDAwMIJcdFx1MDAxMVx1MDAwND9rLbVXrdVPbGr3yM8reXji0L2bw/emjvmIkVx1MDAxOIJThlx1MDAxMcxuXGY8zlx0fFx0xJOSwbzGoCuo5HI5ckhcdTAwMTA3IFx1MDAxY2VKk3j1Wum0mjHAySxDpFTQVqwont75kFC/iFx1MDAwM5Wy62FwXHUwMDEwoI1ufSD6tdOwulx1MDAxOYzCesV6h3rIuC6EXHUwMDA3kXjax8/Yqp/91O9SXHUwMDBmc0faqDAk51iAccZ+5aRcdTAwMDJcdTAwMTKRXHUwMDFjeNPAXHUwMDE4XHUwMDA1wflFgopcdTAwMTRcdTAwMTD8SYBCQ+VYS1wi+Iw1l1x1MDAxOVxuXGJxPUHyoysg3H9Z+veEIEzp32RTXkP9krGbffSt0JeFqJDCTPqMpdInzGKC3Z5p9YaB/fu5zf9Rrywgz9+7j+JcYt83XHUwMDAzsJhpPFx1MDAxNZ+1WaGml3BcdTAwMTYmcVx1MDAwMofXwU5cdTAwMDJ4NGt8i2LnxiZ2n/XeXHUwMDE2vzyI06rp+81cYqpcdTAwMTnr5+qVY1+vz3RccuJXLHKJJccmYyeye/fl7v+P16o3In0=void bytes events bytes events void Input Output Transformations Sources Sinks
In fact, we can define the operator type as a function of its input and output types:
(Input x Output) → {Source, Sink, Transformation}
Multi-Schema Dataflows Tenzir dataflows are multi-schema in that a single pipeline can work
with heterogeneous types of events, each of which have a different schemas.
This allows you, for example, to perform aggregations across multiple events.
Multi-schema dataflows require automatic schema inference at parse time. Tenzir
parsers, such as json
support this out of the box.
This behavior is very different from execution engines that only work with
structured data, where the unit of computation is typically a fixed set of
tables. Schema-less systems, such as document-oriented databases, offer more
simplicity, at the cost of performance. In the spectrum of performance and ease
of use, Tenzir therefore fills a gap :
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nN1aW1PbOFx1MDAxNH7nVzDZ18bV/dI3roUtXHUwMDA1SqBcXHY7XHUwMDFk11FcdTAwMTIvjm1spUA7/PeVnFx1MDAxMDmOXHUwMDAzgYY2bTJDkiPJOpK+73zn2HxfWV1t6NtUNd6sNtRN4EdhO/OvXHUwMDFir6z9q8ryMIlNXHUwMDEzKn7nySBcdTAwMGKKnj2t0/zN69d+mnpulFx1MDAxNyT94UhcdTAwMTWpvop1bvr+Y36vrn4v/pbm8rMsXHUwMDE5TlOY3VSEiKp1P4mLaaFEgFLEXHUwMDE4XHUwMDE591xi800zl1Zt09zxo1xcuVx1MDAxNmtqbJ3j/W737KIn5PlFcoYu3q9cdTAwMWStuWk7YVx1MDAxNLX0bTRcXJRcdTAwMWb0XHUwMDA2mXKtuc6SS3VcdTAwMWG2dc/OXrGPx+WJWb5cdTAwMWKVJYNuL1Z5PjEmSf0g1LfWXHUwMDA2wNjqx93iXHUwMDFhznJjezDhSVx1MDAwMDmgRECMKFx1MDAxZLfa8YxcIlx1MDAwZjNBIGdYXCIkZMWvjSRKMuvXX1DZt/Psi1x1MDAxZlxcdo17cdv1kVLJXHUwMDBlcn2uR6vFXHUwMDAweEgywd3kPVx1MDAxNXZ7esLbXFxcdTAwMTU7XHUwMDBmmfFcdTAwMTJcdTAwMTBcdTAwMGXQuMXOk+62XHUwMDBiXHUwMDA0fHL7nfl9tVuczP77brfP9viZ/rwp9sJb4sv1t1x1MDAxM7tcdTAwMTi3R7tcdTAwMThcdTAwMGaiyC3CNmyV8OWuPkjbvlx1MDAxZTkkXHUwMDE5XHUwMDA3XHUwMDA2KFx1MDAxMFJcdTAwMDeWKIwvq5eLkuCyXHUwMDA2Pbn2M71cdTAwMWXG7TDuVoeouD2jJfJzvZH0+6E2blx1MDAxYyZhrKs9iuuuWez3lN+uuXK5raGzcIiQcY/UXtTRyr7ct1V3MsWP8fdPr2p7T59xZdhK+fPuVT2TtbrRdURGXHUwMDA0Va1jXCIzJFx1MDAwMSdcdTAwMDa+c1x1MDAxM7lz0OzlJ1x1MDAxZlx1MDAwZi+utltrmFx1MDAwMVx1MDAwMbPPh8tOZFx1MDAwMplHXHUwMDE4x4JJLFx1MDAwNDFcdTAwMTSZZDLnXHUwMDFlJ1x1MDAxYyPT+HJMlsJcdTAwMDMmUlx1MDAxMElcdTAwMDWRXGZI58OY0GiK0YxDjClBf1xmoTtJrFvhtyH6Jqzbfj+MbifOuIC0VVx1MDAwZj9Xq0lndZCX9t42rkVh12K8XHUwMDExXHUwMDE4p1U2XHUwMDAxf1x1MDAxZFx1MDAxYT1cdTAwMWN30EnqWlx1MDAwMzOdXHUwMDFmxirbnaJ+koXdMPaj44emNutVO/eHXHUwMDA2PURLgMiVbbV28iBdM1x1MDAxNehKUHGchbRcdTAwMDTCKmlcdTAwMTEkXHUwMDA2Plxmza++naurwYbYj69cdTAwMTTtJPtvd7Oz01x1MDAwZmfLTlpkXGLDMUZcdTAwMDJxgTBcdTAwMDVuQ+x4k354XHUwMDAyYMlcYoXkhzmrpFxuVGeas1x1MDAxMFOPXHUwMDEwiiGqkd/yXHUwMDEy7lx1MDAwNVx1MDAxOEBkglwiK0F7kXy9XHUwMDA3kYNcdTAwMTFcdTAwMWVZ7mbTeDzGjZ6lXHUwMDFhJcjw08+6w1x1MDAwZfYuPnx5239cdTAwMTdcdTAwMWRsXHUwMDFkxU3VXHUwMDE497u7l6RcdTAwMDXGiGepXHUwMDFilFx1MDAxNMxkXG5cdTAwMDDU0IQ/Qd7ql73kTMFG3qCgUlxiyCijkE8yhcJcdTAwMDUyZZa6XHUwMDE5Lz2KpU2XMcZSkFx1MDAxYXmj03zhJv/AUP6J8lZcdTAwMTLzR+RtM1x0XHUwMDA21q3mv/FBXHUwMDE2WiVrP1fm+mG7XZaUSaV7TFxiquI3dmzarbkkkOBcdTAwMDc5PbP2xJxXrfecNsmTMJQm84vf0ZpcdTAwMWZm0WkwWDvZ7lx1MDAxM39/Y+fvo2zZKb1cZqWn82jMYDwteeY4XHUwMDAwN364hmWhMKW8XGbXhZecJTVcdTAwMWXdZ1x1MDAxOS5v7/T4+KKZRts7NNzz8y9Jqm5JSWNNOFxiXHUwMDA21v8m9Ex+w7BJXHUwMDE3IFx1MDAxMFx1MDAwMlx1MDAwMJfj2G3001wiXHUwMDEz9DgjJlx0QsjEdkSn9P43q3Unejdccp7cgJXy51PzXHUwMDAwTPHMNIBcdTAwMDAqIJ0/XHR4+Fx1MDAwMJc0YlDhmT0ggnPAhVx1MDAwMZO7ilx1MDAxZI9cdPFMXHUwMDFhTYx9XHUwMDE4MUjFsVx1MDAwNdW4dlx1MDAxNiwxpaT+ltV0hWv4ylx1MDAwMTJlrvPo51x1MDAwNZD63HhcdTAwMWXdmFx1MDAwMOVQyJ6YXHUwMDFjPzM8PauAPlRZJ8n6viXEMzOL51x1MDAxNtC1U798XHUwMDAxTVx1MDAwNK2a3V0vwFx1MDAxOVx1MDAxNKXdeywgpOh882tcdTAwMDJvNk/eXHUwMDA1yfH6JfxvXHUwMDBmbyx7QICSe1x1MDAxMFx1MDAwYo7pqH52XHUwMDAxsIhcYlx1MDAxY3lcdTAwMDaDXHUwMDE08VFZ8GNcdTAwMTFhYVx1MDAxNTQtglx1MDAxN6cvU1x1MDAxMvzEXG46endcIj5cdTAwMGWuXHUwMDBl/lx1MDAwYjVeb8tcdTAwMTPx/nBj6+lBgpVJ81wiXHUwMDE1tEBwJlUsOqSUcH7xrF/2knNcdTAwMDVBk4pcdTAwMTFIjHxKXG5cYkN4gitcdTAwMDRIjy2OK7NraO6ZQl1cYmZcblx1MDAxY1x1MDAwNiRcdTAwMTbTlCnRaMRcdTAwMTjDXHUwMDE2Klx1MDAxMV/CXHUwMDFh+mngrVO4+Wvols5cdTAwMDaBNmB6qdL5XHUwMDExXHKoyl6dP/Opnni+6iFcdTAwMDJn3zZcdTAwMTZcdTAwMTRCXCIpcqB6jMqbt82b5lVL0eZcdTAwMTHdOT9cdTAwMGXWkvB4luxcdTAwMDVZkufNnq+D3q+ns0mDPVx1MDAwMIzCS8E4hlBMPu8hXHUwMDEweZJLTqgtrX6Yzj5ti85cdTAwMDKkj3NBXHQqP5z6TZXvpiUygdqtLkk/aH2931x1MDAxZGzR3SVUPsTZzEejhCCOXHUwMDA0mJ8s9Ytect3D4mGi0IVcdTAwMTJllu4x4HEuJeacXHUwMDE4XHJcdTAwMDasji/Tuscg5qaw/1x1MDAxNWXj8sjesYq/hdlcdTAwMGJJ3iPxvyp5VV9cdTAwMTYhd8Xp1XGXo5n/niRcdTAwMDGxd0yfcIv4XHUwMDExYCwnd5uceiZVpVxiIyaYXHUwMDA0tFLfIelhYThryilcdTAwMDYhrfj1JObqzI/z1M9cZp6m2StA3Y1izjxKsUmmpVx0K1x1MDAxY06xXHUwMDE3XHUwMDEybo+J8PnT1lx0XHUwMDEyLYasmGH+rOc8sYXlsOtcdTAwMTC/KyM9a/hp2tJmmrHkNr6G6nq9Jlx1MDAxY3aKl9XFXHUwMDAy/Vx1MDAxNmaqUOq7lbv/XHUwMDAxMoXxmyJ9Ease of use Document- Oriented Performance Structured Tenzir
Eclectic & Super-structured Data
Zed has a type system similar
to Tenzir, with the difference that Zed associates types with every single
value . Unlike Zed, Tenzir uses a "data frame" abstraction and relies on
homogeneous Arrow record batches of up to 65,535 rows.
If the schema in a pipeline changes, we simply create a new batch of events. The
worst case for Tenzir is a ordered stream of schema-switching events, with every
event having a new schema than the previous one. That said, even for those data
streams we can efficiently build homogeneous batches when the inter-event order
does not matter significantly. Similar to predicate pushdown, Tenzir operators
support "ordering pushdown" to signal to upstream operators that the event
order only matters intra-schema but not inter-schema. In this case we
transparently demultiplex a heterogeneous stream into N homogeneous streams,
each of which yields batches of up to 65k events. The import
operator is an
example of such an operator, and it pushes its ordering upstream so that we can
efficiently parse, say, a diverse stream of NDJSON records, such as Suricata's
EVE JSON or Zeek's streaming JSON.
You could call multi-schema dataflows multiplexed and there exist dedicated
operators to demultiplex a stream. As of now, this is hard-coded per operator.
For example, to directory /tmp/dir write parquet
demultiplexes a stream of events so that batches with the same schema go to the
same Parquet file.
The diagram below illustrates the multi-schema aspect of dataflows for schemas
A, B, and C:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1da1PiSlx1MDAxM/6+v8Li/bpy5n4531x1MDAwNERcdTAwMTHvXCKrvHWKXG4hQFx1MDAxMFx1MDAxMlxmXHUwMDAxYbf2v59cdCpcdDFcdTAwMTFQkHCWWKUwmSQ9SffzdPf0xF/f9vZS7rhnpP7eS1x1MDAxOSNd65h1R3tKfffah4bTN21L7UKT73174OiTni3X7fX//usvrddL+0eldbv7fKTRMbqG5fZV3/+r73t7vya/XHUwMDAz1+qYljHpO2n1r1x1MDAwNKHE4eZz25pcXFx1MDAxNlJAXHUwMDEw40SAaVx1MDAwZrOfU9dyjbra3dA6fcPf4zWlskNgXHUwMDE4XHUwMDE2OLZcdTAwMWNojG9hye0+wKJ/3YbZ6dy4485EJN2x+/39lubqLb9H33XsXHUwMDA344dZd1ueXHUwMDA0ofbpsX1b3Vx1MDAwMv8ox1x1MDAxZTRbltHvz1x1MDAxY2P3NN10x15cdTAwMWLwh6BZzck5/JaRd8cpT0tcdTAwMDYkpoxcYopcdTAwMDGf7vWOVzdcIs1cdTAwMTBcdTAwMTRIXCKuPkNcdTAwMTGSK2t3bMeT63/Q8H58yWqa/tBU4ll1v1x1MDAwZlx1MDAwMTqg3O/z9DLawH1uXHUwMDE5ZrPlqjbit/WNyW3nUkCCmd/unb5XqE9cdTAwMWX+P/6tdrSuUZg8lPOzZrPLTvmdW82JU3NMNJk5mrl5Vv3l5lmDTseX3dtxXHUwMDE4UC3/7INeXXvWXHUwMDAyyCTjgENCIfY1SanbQ/h0XHUwMDFkW3+IUJy+qzluxrTqptVcZlx1MDAxZmJY9Zg9XHUwMDFkre9m7W7XdJVcdTAwMTiXtmm54Vx1MDAxZZPzXHUwMDFlOI791DK0esSZY/f1vNP5tuRt/qc9X3EmX6af//lcdTAwMWXZXHUwMDFizXRHc/vPdCdzu7Ml+4uQOGlcdTAwMTDc4HKXw2lKXHUwMDExh5hxIVx1MDAwMKBcdTAwMDBcdTAwMWH7kC41wIC834J/f39fXHUwMDEyxlx1MDAxMIbh5ldcdTAwMTgjkjEkoCBcdTAwMGKjXHUwMDE4r1x1MDAwZezcNa8/tS8pPz+B91pn/Fx1MDAxOINiLU1vXHJcdTAwMWNj81xiRt5FMLJSXHUwMDA00406qWtcdTAwMWZFMDVcdTAwMTasZGBgh2E7XGbb22GYj2FcItw8dcUg51x1MDAwNHKC0cIgNsyOboTZuHQ4qnC3pD1cbtPubTeIrdZccvtcdTAwMWOIcSZcdTAwMTCkiLJcdTAwMWSG7TBsh2FTXGYjseGkUk9GMVx0YMA8XGK7z1k4W+tcdTAwMWL4tPXYLWVcdTAwMTHpXHUwMDE2quZ2Q1x1MDAxOEtcdTAwMTCEMaKCfyZ2XHUwMDEwtoMwb/vDIEzznllcdTAwMTSGccrDrVM3jEmqNrFcdTAwMDSGZS5cdTAwMGWP+kWr0ON992hYhoNis5R4N1xm43fdMLRKXGYzpKFcdTAwMWKNt1x1MDAxOFx1MDAwNrFMQ0glUlwiXHUwMDAwICXxYWqKaW9DSypcdTAwMTDy8mO+n7xKTPs11bFXNUIvLb93ULdKqIt/+KHDP2fqXHUwMDEw0PjsN1DxXHUwMDE4gogvXHUwMDFlclx1MDAxMVx1MDAxZJzBe1Qt5c8uLkgu23auyvnE2/r7IdfX2DpcdTAwMDRpXHUwMDAyXHUwMDE5klx1MDAxMGBEXHUwMDA1XHUwMDE1/lOZ2npwJK/Wjlx1MDAwNGZcdTAwMTIpuXZcdTAwMWXMVpj1TO999UTn4kCsYrw9w+egQFBcdTAwMTJu9efBXHUwMDE0XHUwMDEwQSHB4lx1MDAxOeSRXHUwMDE4XHUwMDFkNK5cdTAwMWWPfmY7P2SzJKpaqUq3XHUwMDFmXHQkV1x1MDAwZVx1MDAxMMCAYVxiUUiuVSFcdTAwMDFKXHUwMDEz71wiSlx1MDAwMkBcdOJcdTAwMTGsL2WaXHUwMDExXCK4kExwJUzgXHUwMDBlveCCZFxicIx3uLCNuPDm8c5cdTAwMDeJOJ2Zc7qFXHUwMDEwwzF099leXCJQg2FcdTAwMWGHXHUwMDFhXFxcdTAwMTLBKEOLg8ZP65LzVr1zRFxc11x1MDAxZFx1MDAxNKzC0XnjNlx1MDAwNjRCxr8pyIDhQMFHhdUnbOug1mhEYIZcbj2JpFIwiVx1MDAwNeHePX+LXHUwMDE5b7NcdTAwMWbqXGJKqICbyH5MVfBXQFGnXHUwMDFh51x1MDAxYSM3XHUwMDE1VOFcdTAwMTf9qF2OXHUwMDA3h6cnXHUwMDBm7WuNgn3dKFx1MDAxYtfVXmra7/erOq9cdTAwMTCA3rWMXHUwMDE5OVx1MDAwM0aBabxRXHUwMDEwirFcdTAwMDBL+NTRg044k0KC3jVcdTAwMGL4XHUwMDE1SUC4gFmgt0nBSU8l9n+FOlx1MDAxYrbl3pg/n9M3M615rWt2xjNcdTAwMGZ5otJqSFx1MDAwN6mZpoOO2fQ0O6UrUVxyZ0bpXVPXOtNcdTAwMGVds15cdTAwMGZSha6uo5mW4Vx1MDAxNFx1MDAxNoF42zGbpqV1Sm/F8DLux9NYKI1oQCf6xiRcdTAwMWbv6d1nqIyFW6eZeykkpEj4OjHX/zXJ4bBcdTAwMDFzhVx1MDAwYvmjeKfRcS3fjqtcdTAwMDNLXG6Vhb3fdVKZlIZsoFxiKluIuiBGXHUwMDA0XHUwMDEyyVx1MDAwM9abdO4qtG9cdTAwMWbusvq+OGk/5ceOuNXwXTuR3Fx1MDAxNZtcdTAwMTBSMiAsXHUwMDE5WTz3XHUwMDFiPeikc1x1MDAxN8NpSIgkXHUwMDEwe/F2ICz+QuqCaVx1MDAxNWJKISiiWFx1MDAwMlx1MDAxNkC7d6hcdTAwMGJCQaWCqv/MfNaHqCuzJuqaXHUwMDAz6WHqynwldcVPOnNcdTAwMDFcdTAwMDBcdTAwMDQkMMc5l7pKXHUwMDA3me7loF5sy3L++MpcdTAwMDRcdTAwMDeVyk3CqYsnIVxuW8BmI6hcZkFMXHUwMDA12cwk9MeorNY4XHUwMDFiufj+pHz9aFx1MDAwZVhcdTAwMTeWyofkKJFUJmOtQonh+fmLR2GRY046k1x0nFZeq8SMXHUwMDEwpZic01mzSHBcdTAwMTSGnie9XHUwMDA02YSHl1x1MDAxYy5bV1x1MDAxODZcdTAwMDfjN1x1MDAxOYZxXHUwMDE4a7VcdTAwMDRCXGJcdTAwMTBbYjlOXHUwMDFlXHUwMDFhg/shK1xcP1XExfDm5GrwhK5cdTAwMTLOZXJruUxcdTAwMTKA1ePh66k9WFx1MDAwN5X1cm397FLmss2n+yfz8azVu+hcdTAwMWJcdKQyguNLcpRcdTAwMDeBlFx1MDAwM7FEnj161Fx0JzNcdTAwMDS2lswkXHUwMDE1XHUwMDAyUSZ2KcVA08q4bFx1MDAwZcZvkstcdTAwMDSINVulxFx1MDAxNCt4XZzLbG7qdtZ2XHUwMDFmmDuqXHUwMDE08PHx2ch8SjaXIfiFXFzW0HVUj1hV+sG4jFDOXHUwMDEw59tcdTAwMTOWjXPHXHUwMDAy91x1MDAxZaHlXHUwMDE0K/ZttlptXHUwMDE1a+VcdTAwMDRyXHUwMDE5RfElZ1x1MDAxMFx1MDAxMYa5hItPj0WPOulcXIawUnxcIjGH6oZzQkKVJl/FZVx1MDAxOGApKJWUXHUwMDAzXGZcdTAwMTfMMTIsuaKzP3x+LLsmMptcdTAwMDPyYTLLrpbM4le1gPiVeUB5RJxcdTAwMDazzvNstnrvnOTahcZcdTAwMDVcdTAwMTbsXHUwMDE021x1MDAxOFxcZ8BljM0m6iVcdF9Z7PG5lyQgIKlXXHUwMDBivqY68F1cdTAwMDXY3m5ty8KXS87yPIxjk0vK+lx1MDAxOZRcYpPF42izwS1cdTAwMDLYOT+365mOeXqUL2ZcdTAwMWaS7ZHDOVx1MDAxZflKq91xTZf1WlS92ltcYotwNKCKsVx1MDAxOSe7XHUwMDFh1m1EsJVZbPzUJuRcdTAwMDQpXHUwMDE1XHUwMDAxS5Tl/PjR7F9cdTAwMTYqXHUwMDAz91x1MDAxMLRcdTAwMWLDdm+YOVx1MDAxOFx1MDAxZiY+WpjjdnyJzZJFbJZ7XCJQtpFcdTAwMDTwzmS9bTmTJZ8y2fencVx1MDAwMFxut/pMq6JeSJZZTuK6h9o5ubUuxpjmoX52U5HjbrKZXHUwMDE2h+dx1lx1MDAxOCt8rppcdTAwMGVcdTAwMDGmwjdcdTAwMDS2qFx1MDAwNKFyTIb38CDDa7WyPdCA4T5cdTAwMWU0XHUwMDEzmOtcIjB+3kYpXHUwMDA2IJjjxePm6FEnnL1cYtjWcjpcZiRUYVx1MDAwYvqzM13rKqebXHUwMDAz6Zssp5Mytlx1MDAxMlxc3X0kljLaolx1MDAxY51VM5pcdTAwMTh0XHUwMDFkt75/NsjftkZxLmdSqIvLNFx1MDAwN0r7MWOQcelcdTAwMWLA85v0aFx1MDAxYWHMKFx1MDAwNcpwOWIsJNgmXHUwMDE3NSmRXHUwMDExXCJbNW/zM1c8XHUwMDA148NeZXhfOs6cPrSq+8W7XHUwMDA0clx1MDAxOY/nMlx1MDAwNLD6IUtcdTAwMDRi0YNOOJUpRXzPLuBK7WK1JVxiUEiG+Ex2608ks3XVIMxcdTAwMDH5TdYgSFx1MDAxMJ/yhIxyXHUwMDBlpVxcfLq1e33RK1PrOLd/XHUwMDA1RvuXI0eWXHUwMDFmXHUwMDEyzmZcdTAwMDSANJRMXHUwMDAy4L1GgeHNsNlcdTAwMDeLXHUwMDEwpHJCXHUwMDE5pNtTUadh0jku6e1iQ1x1MDAxN8adxWvoPo9cdTAwMTLIZlxmxft4XGJBXG6WeMVV9JhcdTAwMTNOZp7ic0YkUFx1MDAxZS1iwVx03i0gM1x1MDAwMlT4/KdHZutcIrM5XHUwMDE4v0kyg1x1MDAwMMUuradeXVxuoEuEZufli6uTQe+pVT52q5V7t3VQ3U94dThRRFwikFDbM5n53Fx1MDAxZUVmMiTXRrmMYVx1MDAwMJS3sVx1MDAxMVx1MDAwZvRjXFyWJ6d3w/xV/qY2ztc6TsO+vmFJXFzoxOPfm61wXHUwMDFkqnB+maXr0aNOOpshnsaSXHQhn9ksZFx1MDAxN3CVdrFaMqNcbrK43MVla6GyOVxiv9G4XGbGXHUwMDFhrWCMelx1MDAxML+4zdYuS/suPylcdTAwMWNcdTAwMTXyR5XyrUU1ka0km8nen1x1MDAxZlvta6JXW1x1MDAxYY44ViFcdTAwMDLYomVON9rR8GisXHUwMDFmNHI58sjOXHUwMDBmXGa73ddcdTAwMTJIZOxcdTAwMWRcIsNcdTAwMWWk8iX+iU30oJPOY2C2Mnx2kVx1MDAxM0twYTiDUMBg5f6fyGPrKlx1MDAwYp+D72suXHUwMDBinzyzSFx1MDAwZXunnFJpg/I8XHUwMDAxW9xg5+hDMlxydp/TNCCMXCJv5SuTgM5cdTAwMTZnKZ80jb1Xpis3T1lcYlxyybWUwbqOZvV7mqN06a3RcuVcdTAwMDArP997x2OUuVKaxlx1MDAwNFx1MDAwM6h+QcghXHIgx2uqkVx1MDAwM4JcdTAwMTFZgtVmrGg11qpQJ1x1MDAwMHlLWKvlaehz12dV/vZCZymt17tx1WVSr28vT1xyTeMpXHUwMDEz5SVMNo9cdTAwMTYnhuApnDF56fnvb7//XHUwMDA1ylxmpdkifQ==A B A A C B A A A C
Some operators only work with exactly one instance per schema internally, such
as write
when combined with the
parquet
, feather
, or
csv
formats. These formats cannot handle multiple input
schemas at once. A demultiplexing operator like to directory .. write <format>
removes this limitation by writing one file per schema instead.
We are having ideas to make this schema (de)multiplexing explicit with a
per-schema
operator modifier that you can write in
front of every operator. Similarly, we are going to add union types in the
future, making it possible to convert a heterogeneous stream of structured data
into a homogeneous one.
It's important to note that most of the time you don't have to worry about
schemas. They are there for you when you want to work with them, but it's often
enough to just specified the fields that you want to work with, e.g., where
id.orig_h in 10.0.0.0/8
, or select src_ip, dest_ip, proto
. Schemas are
inferred automatically in parsers, but you can also seed a parser with a schema
that you define explicitly.
Unified Live Stream Processing and Historical Queries At first, Tenzir may look like a pure streaming system. But we also offer a
native database engine under the hood, optionally usable at any Tenzir
node. The two primary actions supported are:
Ingest : to persist data at a node, create a pipeline that ends with the
import
sink.Query : to run a historical query, create a pipeline that begins with the
export
operator.This light-weight engine is not a full-fledged database, but rather a thin
management layer over a set of Parquet/Feather files. The engine maintains an
additional layer of sparse indexes (sketch data structures, such as min-max
synopses, Bloom filters, etc.) to avoid full scans for every query.
Every node also comes with a catalog that tracks evolving schemas, performs
expression binding, and provides a transactional interface to add and replace
partitions during compaction.
The diagram below shows the main components of the database engine:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1daVdcIk3S/d6/wuN8XHUwMDFka3Jfnm8oKlxiKiqo8M5cdTAwMWNcdTAwMGZLscgqXHUwMDE065znv7+RuFBcdTAwMTRcdTAwMTRcdTAwMTQ2aDFt9zl2W1x1MDAxNJBVdW/ciMjIyP/+Ojg4dMZcdTAwMWT78K+DQ3tUzDdqpW5+ePhPc3xgd3u1dlx1MDAwYl5cItPfe+1+tzg9s+o4nd5f//pXvtOxZu+yiu3m6zvtht20W05cdTAwMGbO/T/4/eDgv9Of8EqtZN5PKlxy1i+fllx1MDAwN1x1MDAwM8Ve8pfFk3h8PJ6+dXrS+4C6dtHJtypccnv20lxijlx1MDAwYoU+flx1MDAxZsPvXHUwMDE4k9mBYa3kVOEgRchC7j/i45SqXatUXHUwMDFkz1x1MDAwN71+z19cdTAwMDezIz2n267bJ+1Gu2tcdTAwMDbzXHUwMDBmUtY2Y7OhXHUwMDE08sV6pdvut0pcdTAwMWbnON18q9fJd+HaZ+eVa43GnTNuvN65fLHa77ou6PVbXHUwMDFl3kaNPcc/3lfK96p2afY2+N5KtWX3enNvanfyxZozvSdodiFmkJ14afo0/jNcdTAwMWJWN9+04+ZxtPqNhvuDW6W3XHUwMDBmfn9qs0dC3478PVx1MDAxYqdtl6bfR5FWmDP28cpcZj5YXCLv0at2a1xuJcGpZoy4XHUwMDFlRK1cdTAwMTdcdTAwMDX4ONNPLedcdTAwMWI9e3bDzdBOvdByw2tcdTAwMGU9jj2aPVx1MDAwNVx1MDAxN/iOa/XnXHUwMDAxqT9OeKf+eHPR7Vx1MDAxZVxyycvhx3l/v/1vdqf6nVL+dTxYaCFcdTAwMTlcdTAwMTFcZnHCP15v1Fp1721stIv12SX8ct0zXHUwMDBmXHUwMDE1lo9mgVxuc1x1MDAxNzNlgVx1MDAxNNJcdTAwMTKSIFwiuZJKu/A9ff5SLHJcdTAwMDJcdTAwMTNmXHTO4YYrwlxiVpIvcoLyfaFEr1xyZueLXHUwMDE5MffCXHUwMDFi9CVcdTAwMDE4YHhcdTAwMTTLkC9cdTAwMTaOviNcdTAwMWZjyiinSLBPQH9uXHUwMDFjXHUwMDBi+Fx1MDAwNFx1MDAxNmpFN8DnXGZuXHUwMDA2ZnBva62Dpt1sd11GudxuOXe1iVx1MDAxOTpRc0fP8s1aYzx3283nRFx1MDAxYbWKuVx1MDAwN4dFXHUwMDE4tN09dN9cYqdcdTAwMDai8XFCoe04b9LxXHUwMDA2o55ccoOeftVcZo5F+Ko8XHUwMDFj7caDaEi7W6vUWvlG2v+KzFfE3nGPLcJX0FTV8pFcdTAwMWM+aqdyufMzXHUwMDE0795GzqrHgVx1MDAxNVx1MDAwYiNJLcY4Zlx1MDAxY1xii8GCeFx1MDAwNFxma0tcdTAwMTGNOFwiXGYgg2ZcdTAwMTf9Tl0mkIVcdTAwMTVcdTAwMTaUYayInD2AT4pcdTAwMTnWXHUwMDEyXHUwMDE3yY+YuZ64i9GMIYHQckajXHUwMDA1hfvQMkXgtmpcdTAwMTc7dq5l/XHp+EZcdTAwMTVj0dhDvnx6UU9m2oXCt2nZ8tFcdTAwMDTQMky4sEDENFBcdTAwMDCcXGLN5ukh+Tp6aKCXxppRyjX9bVn7VnKERdYwXHUwMDE3XHUwMDFja/Ct1VJcdTAwMTZQP1x1MDAxNmCG4CFKoT5Dg13rWrt1UKr16uFVtTU641W1hetcdKZpK+TK7bto32dcZoxcdTAwMTSEXGIsXHUwMDAyPONX24BcdTAwMWRRe84+5GMpnKne45OrvnjB4aHOolEwdolcIk+k6T6wYDVs83el1fiHre2iXZ6d44pWXHUwMDE3bVx1MDAxNtHa0u4/M7P4xlGKKCZcdTAwMDLIsWVcdTAwMTOwJXW6QvVod/x0VHkuxbuVStbJPSZcdTAwMDYudfrn8o99fXNbIFx1MDAxNSPVWymaPJkvJ2tcIt+8nP+W9+/Pd7vtYdDPvb+oZUnxNuVUnF63cfWcTZ5rXHUwMDE07HPXq+nUQv22mi5cdTAwMTdKt/VdsMkz6yvB/EKgXHUwMDE3JKBe9ZSWM9PDsG/jpeaWXHUwMDA2l1x1MDAxOIOjxoh2XHUwMDE5qun7XHUwMDE5JVx1MDAxNt9cdE/hzlvgzIN/XHUwMDAw0lxiTlwiWe1qvNGUMVx02FAuRdxcdTAwMTFNt4nMz0ukuYMneSffaFdcdTAwMGXnXlxirp3NWqnkViWPSq5cdTAwMTFcdTAwMTOvSi5cZmZBJZeL9Oe1kyzGXHUwMDBlXHUwMDFmXGZcdTAwMDXviFF4XHUwMDE4QeL+V4Y2JO1U61x1MDAxM5Yv51x1MDAxOCO4dUNKzmXotZMyi2tcdTAwMGVcdTAwMDEvZ2COpDc/xYlcdTAwMDUuPdZIYCSo9oxrO3Qly2TVPfQ3gsLjkpiD2Vxip46e1FuVZvd+3EOxgnDqt6XyKNbcLMpcdTAwMTNYXHUwMDEy7cb/LnSJYH/UXHUwMDEzxFx1MDAxOFx1MDAwN3+FXHUwMDA0Rv3yq1x1MDAwZbcuSWVcdKlcdTAwMDFJSDCqkMuwvIJeMUvuXHUwMDFh9Fx1MDAxOGNLUVxmo9BcXFx1MDAwMPlcXOq4QqNcYpJcdTAwMTjBXHUwMDAwd+9Lhkek7opVu5nv7Uik1lhtr0gtXGZmXHUwMDFiXCI1PWuZXHUwMDA3qf1jO0okR5yKIPH7K1PH5bIoXHUwMDBmjtXx2ahK2F3jJnp5i0KvT3x/9Fx0K6Eppe45hn1cImfPyXed41qrVGtVvG+xWyWfV1x1MDAxYfmec9JuNmtcdTAwMGVcZiPVrrVcdTAwMWPvXHUwMDE508+NmCCtaudcdTAwMTcuXHUwMDFhPtn3tY75uHlFnv3vYIaU6S9cdTAwMWb//88/1599RNae73rqn3uHWvtcdTAwMDasfN/wy/3vpnaDIOw9OlN4XGI9ISbjwXNCZ5Obi37ytD0uTFx1MDAxMk9cdTAwMGb9y9Q5So5CbzfkartBQ2Q3tERSmXjjx2z8mI1vNFx1MDAxYv6z4GAwKEGB5lxuXm1G83iceJk0I+XswyR/kpE4q9Khj4XhXCItxiTBXHUwMDEwXHUwMDE1aPAsZrfjNavMXHUwMDExeOxcbqhCJVGC/lbuaunM1Cx/tcRwLLpcdTAwMWJAXa1cdHWVkOzGblx1MDAwNJju+bFcdTAwMWOLZ2Pkd34glq7OXFwtzvd9KDzHwtRcdTAwMWVsMOtzXCKKpYS8uurhQS/HM9nOxImUws5WXGaB8Fx1MDAxY13n2cqBzF/DVmomgOCbMITyjII7IVx1MDAxN8lLiG+d4zubiZZEM7lzNn8yuzU81clIrjLQ/dKYXSfFZDg4ToVw1oVQX9+XmlwiXG7JZXBiLL/osFx1MDAxM1x1MDAwM/xdi3NcdTAwMDXCIFxiU5orLzPUV+lcdTAwMTjBlsRcXFx1MDAxM2nGRKir7HRFjlx1MDAwYiNDJqZ2ToTwpLhSIFg1x1x1MDAwMHjupeBJLqfd8c1wrbHu3lxm15KxbCPH9TpLu4yw0r9IRSiGqVx1MDAxMoGKL4PMR4eUsa7C+FdP04X9rVx1MDAwNqQqiF/JsCSSkN1Ps3xvOOqqNHxbXGJcdTAwMTFk1nLK5WLfjFx1MDAxZllMzP2ZXHUwMDAx2dyzfMdcXM7bgVnx4pbdVzDANY+XuFUnlqjfcmL9VJq6XHUwMDFlrof0xORjwJVCwUlf6MbO0UOiWD3tdOzqWaNYyZ2KsJNeSsuU4CGJXHUwMDE0XHUwMDExmnhXXHUwMDA2ULJcdTAwMWJcdTAwMWKAqbCU1kpi+FpcZj+XXHUwMDE0KfPFWJNcbm782z3NUblFXHUwMDE5zVx1MDAxZF0hysUpS//datnDg867KH56XHUwMDFhaoVCz12BV47XjVwikDYz+jltpkx6j77TXHUwMDE03EqitFx1MDAxYqXrWLq6pCukLPVKM99cdTAwMTEtg0kzXHUwMDA0iUQpd3H7PrHQI81+XHUwMDAyXFxJ16+KpaG+yrxcXHZTznG9rppXy1x1MDAwNFx1MDAxOFvwNKTmXHUwMDE0gVhcdTAwMTDGsHKd9Ka/1EJYK1x1MDAwNVx1MDAwZY0wqX62KMjbdVxujn68gtm/m3pcdTAwMDXcVdbgMTdScdAshYKbm9UwXG6ruSEgztKsbOFKYMY8SS3GhaVcdTAwMTXCxkOnelfTVoxYmGq441x1MDAxMuCLMF+yJneZh8Axku6K1i9NX4Wxavj33I+K7Vx1MDAxY1x1MDAxNPNgmMwwXFzS/+9WpTawW1x1MDAwN/nWgT3qdOGW7SZvsNIr+eTgtuGsrMyLg1xi+FlcdTAwMTCOXGJcIoDq4GGFnblLkFx04p3u0DlSmXNcdTAwMTLJnHXDbkEkXHUwMDA2XHUwMDEzYlZcdTAwMDVxzqSgePYpr1x1MDAxNkQrSyCOKFx1MDAxOFPOKdld8s9tXG4+7IZ3rcSSNDhcdTAwMTg/hVx1MDAxNNp5XHUwMDE19nI7si5ccj5cdTAwMWW0q9TJNVx1MDAxMi86I6O5au3lMSGCLmo4OdOX52M+qFx1MDAxNIaEn1+g7FiNXHUwMDEy+7WogcpcdTAwMTWLXHUwMDFhlMZcZlx1MDAxM7RBSdrSu1x1MDAxOXaGSVxyXCLNhUJEXGIlvMsgzcTT1lx1MDAxOLZiiVx1MDAwM7dcdTAwMTTVmiMuIChcdJpaV1x1MDAxMPVj/Fx1MDAwNSq9qsqZXGKMN6lyXqqjgXPr8VbJXHUwMDFl2buI29dcdIRXNFx1MDAxN0ay81x1MDAwNVx1MDAwZVx1MDAxNPvn1qWQXGK8vFxy0mx18TCsn0Wat4VaY1TrXFzEm42jfujZSuQqPeRsi3roy9ZlwT1bdKGVklx1MDAxOCkpQ7pQ0HlMT9j1XalcdTAwMTbPnqYyjc6ExflFXHUwMDE4NYr4ol7Jac20XGa+vmH5RYdcdTAwMWT0lFuAZ3OhXHUwMDEwN2PX/XhcdTAwMDU9hJH4S5xAwSzEtabCSNTSJf9kUaTAU1x1MDAxN4qS/V+HXHUwMDE3ONa7q9tOsbqjXHUwMDE1XHUwMDBla8z2wlxuXHUwMDA3z1hcdTAwMDKJXHUwMDE0Vr8hUq775Fx1MDAxNSlcdTAwMDNgNLfcZVx1MDAxZF/zw1x1MDAxNsvFr+rdzG315mnMmtlssVx1MDAxMHa+XHUwMDAyXHUwMDBi90ekNKdauPPgoVx1MDAxMqlIKkmvzjpcdTAwMTdXXHUwMDBm/Vx1MDAxM9ksXuXrt3b8T1xu0LB/gKaoolxii1xyXHUwMDAytOV3M+xsXHUwMDEydH/VjyMh4Xyyn1M84VO/NXrwXHUwMDE16udLVeS7vI8pXHUwMDBlOHdcdTAwMTeDrk2lZLvp+EsmKzo3g6NcdTAwMDGKVsulciX0TCVcYqhcYvyQXFxgqbG3hpeJL9A9YuZcYoGmmGC0ti3VTFx1MDAwNVx0WFP3Mqp9pWngRIplWV89zTD3lbvPlvjHjdys0eJcdTAwMThcdTAwMDePXHUwMDFidSRXfVx1MDAxYaNq7uT8+CWNT6I39cdY2PmIMWJcdTAwMTadllx1MDAwZVx1MDAxMyRcdTAwMDQjntwmlkBILlx1MDAxOeCeaSZCX1PP4K9EaPdi+jlf9fbpXCKRXHUwMDE1pa7T75Vvb54jjeJxjIbRp/RfbUKZ0HP9hNfxYvk1h51cdTAwMTeEUVx1MDAwYq6UI0Y1lsrbXHUwMDE4VOGvocXnXG7qXHRwg37FQrFcdTAwMTCJ1U4r6tfY9i+qqF/dXHUwMDE2UGLf0j2CMfiXiG9Qu4fFZabXT/JSpCtTsVrysXFbjoaetVhcdTAwMTGLSFx1MDAwNjQxOUUsPFx1MDAwYmGAXHUwMDExXHUwMDE2XHUwMDFjllx1MDAxNIBcdFx1MDAwNFx1MDAxN56Bbcu75PAlXGacXFxcdTAwMDJKJtTMg5glWeBcZlxyY4VcdTAwMWZCM1x1MDAxOLCXwJoreNVvXuBDL1x1MDAwZa+jaJhL0+Hg/PSumbuwn1x1MDAxM+2KfteTb1e7Tj8lq6VOu9TI3lx1MDAwZdK1+lx1MDAxOSvcbDh9ICFG2P1cbjLk3z6BoNdcdTAwMDTKXHUwMDA27Vx1MDAxM5Zfduipo4klTclcdTAwMWRcdTAwMDXpXHUwMDAw+HlaJFx1MDAxMYjMOLBcdTAwMDZBXHUwMDEwXHUwMDA0oVx1MDAxMNlcdTAwMTF3sEmgmKJcdTAwMWSO+dIuflx1MDAxMLtpwVx1MDAxNIxcdTAwMDKEXHUwMDE59Fl6qaMoXHUwMDEwijBcdTAwMWZcdTAwMGZwXHUwMDE31FnsYE3ejvztz6iVoFx1MDAxN8SV0/ukcGJLXHRcIpHJe1x0qtyLK9ZcdTAwMGLpS992XHUwMDBl2t2DMzvvVN2iud1ugaslZomo+o7Lo65IXHUwMDBizFx1MDAwMSFvP6lcdTAwMGKLW5nAXHUwMDAwXHUwMDA18a1bxVximCTNZlx1MDAwZYFcclx1MDAwNjlzYsOLa5bLXHUwMDFkJzOM2MlHfVx1MDAxM/p+K6C11Fx1MDAxMqbRXG7RXHUwMDAy7Fx1MDAwNfZqLUgxk1pLMCbGi96NwcDawkQr039fm6pwuqR0VXNcdTAwMTinplx1MDAxMFx1MDAxN8JAXHUwMDE5d1WivKstXHUwMDEz4DDQsIjtl+nhOoz7+pNcZqJcdTAwMTFK2Vx1MDAwNpN06TKrNIvZ00HnvtOP1tKiMsmFvrJcdTAwMTJcdTAwMTNcdTAwMDSaKJEgYEFcdTAwMDE3aH8hXHUwMDBl6EbINI5fvsbzXHUwMDA35IsgN5Myim+yXHUwMDAwoa1cdTAwMWKx63yHXHUwMDFkPeSrlco1XHUwMDFknmTH2fCDXHUwMDFjXFxcdTAwMDWNXHUwMDEwU1ohXGLZ9Vx1MDAxZYOcwFx1MDAxM1x1MDAwM/3lPyD3gNw3za0lnndcdTAwMGXX9jxORmJcdTAwMTfp5C1+Ltw9srPBZeTqPvxZbsLAKYTAhlNCqEJ6fyGuXHUwMDE5MmlA8XXhzZ5A3Hd5OYbHTqjZ/iQwyI/u6rnY6WN3VGx2a+fRs7i+XHUwMDFl9cJcdTAwMGZys1x1MDAxN5UwaS/BKN5jf1x1MDAxY/wuuFx1MDAwZYihfuy4XHUwMDA35P59vFx1MDAxNZdgxjfp2HdVc0Qy05zcPrc60Vx1MDAwMm2WJ6lmMvwgl9r08UTgl1x0wojcX5CbfkyC6tDkeENcdTAwMDNy/1x1MDAxNVxmykxpSbnBNEZcIn1xf1x1MDAxOYlfRsrJo/5jo5B2RtlcdTAwMTDtXGbmXHUwMDA3cq0swJZmlKm5XFzTXHUwMDFiyKllslpagaZJpHZTJLNcdTAwMWSQXHUwMDBiyanC2GdcIvJcdTAwMGZcdTAwMDb5im44XHUwMDE4/Fx1MDAxNbPPYWCQXHUwMDEzdn1cXD+q4MJR/XhYjdmju1Qq/HEnwMYyXHJmkNBcYiPmnW/YXHUwMDFmkGuqpCZ+PTr+WIzrXHUwMDE1S9HgkTNcdTAwMTjLXHUwMDA2e1x1MDAxOVx1MDAxNFx1MDAxMjrab1XRsJDtpk/SXFw2mo8q/Fx1MDAxOKfSokhpjaWWXHUwMDBizVx1MDAxZIipXCJcdTAwMTHS1CdTzojrfoVcdTAwMGXjUjGuhf7BuFx1MDAwN+MuYfPWSVx1MDAxMTE3XHUwMDBiubbzaHlcdTAwMTTNXHUwMDFm9UuaRCZcdTAwMTckxVx1MDAxMkXSelxuP8C5tDBcIkhrYTLMasFcdTAwMWanXHUwMDE2XHUwMDAwh5qKXGZTXHUwMDEzIcOLcGKuQnGOf4LO+dpcYn9XRWKz7e8mnkr9tp3IyGuRuThcdTAwMWROsnf4sZ4pXHLDXHUwMDBmcmlqXHUwMDFmKPjjSitClmXIkSaaMGA8lzzEIFx1MDAwN0d8Krs+zTb+WJCTXHUwMDE1O3dqyk3N60bdKW/q6aerSVWMI+XG+cNLsn83XHUwMDBlP8q1sFx1MDAxMJWEU5NJwoJ6UY4gJlVcdTAwMTQ8XHUwMDAxXHUwMDAxMTpcdTAwMGIvyIlcdTAwMTk9N5us/Wkg991WXGb5uilcdTAwMTCGaZNloMHn8lP5fvU6Me6fnlRyXHUwMDExnFx1MDAwM25cXKZD32eNuVx1MDAxNraOXy3hb/V1XFxZtb10XHUwMDE3IG4hzLjiVIHTRFxcue2PtVx1MDAwYjBGhbjP7OVcdTAwMTdcdTAwMTZti1xy8Oi6h//Te3vMnb34MGdv/+X+93OrklxcXHUwMDFky1x1MDAxNlxub5RCXHUwMDFixc1HWXyu7m/G99FUhlfub8tnz2VcdTAwMTJ2skqMLFx1MDAwMZcpNedcYlxmpMfholxim1x1MDAwNXxcdTAwMThOkVx1MDAxMvwy4lx1MDAxOdh3tzSTSiOEv2DLzlx1MDAwZtRttm3tc+P8LDbWd91xo815jsTuY1dBXHUwMDE3zFfbV83T6+4wbbPnXFx7kk1WS7d6/ls+tf377lx1MDAxN+JvYtVWktd/Ib7v6l5OXHUwMDA11niDxb3Ln1HYaSulXHUwMDA14Y9EjEhk6ua9tFx1MDAxNduj7Zb7pDFCgevf22dcdTAwMTmiR/aFXHUwMDBipnbYJm2N6Hx/mzSwXGJ+VCVguSG+QVx1MDAxYuymJdJRefpSqiZGZ+fJ+Mt5lCZcdTAwMWGhX4lcdTAwMGaB3kqN5VvU2N/sQKOElpKw3S+9/5yePmZKg2YqgXr5u1Gzy1x1MDAxYbL2dJZcdKE+XHUwMDExsVx1MDAwMvSMmlx1MDAxNWtcdTAwMWKUjyy/6rCDnpo1XHUwMDBiUmJMwEeT1KtQXFxZ/EtcdTAwMWPLT7VJXHUwMDAzdeBcXMvdN2LaSYBcdTAwMTi+TjFr7Pa390kj/rNLpkGC2dJlXHUwMDAzl5L3XHUwMDFmXG7ZSdRcdTAwMTndXFxcdTAwMWVHxJkuJDvJethcdFx1MDAwYlx1MDAxMfa+qFx1MDAxNDbNgTlcdG2ftFpcdTAwMTNFY7mTp0o2gVx1MDAwYnftaD1Wv8NhlCnuXHUwMDFiRlHMJVx1MDAwM/tcdTAwMWS8Kcvyi1x1MDAwZTvoXHUwMDA13mOVUmb/XHUwMDE1U8P0o1JbUak1dvs7+5lcdTAwMTHuK1BcdTAwMTJcdI5cdTAwMTDaYNl8UY9b5/lnXHUwMDAwbD3CXHUwMDFljqNcdTAwMGYt2a6FnqpYWlpwYXp5Mu3dkpgy/Vx1MDAwNfL0qXZmgjKCXHTa/a5cdTAwMGI7Z+lcdTAwMWbRzixI8tVvdzeDU83FXHUwMDAyNFx1MDAxN4CEmbRcdTAwMTg3XHJ4KWJg8dGS1iWrXGKxLfn5bqp/mlx0QTpBfHiL1KzVcdtcdTAwMDTXfK0r+bSw2TtcdTAwMTeUalx1MDAxNig95SXj3MC3SMetzrT5o9Dz9lx1MDAwNYc14GTi+s3fVucvXHUwMDBm5jZ/Q8wsLKRcdTAwMTCZc2GqJF1nve79xi2z6JCYtbVcdTAwMDSBXqhcdTAwMDVI+E+Pbjz5ucJ4rJ5hWW08vDue8FlxyI/x+Fx1MDAwNuOBqdlIVrCFqqXpi77NjDCVXHUwMDE06WDtoDe0XHUwMDFkmiPXvjh/sO1YvUWMy3aA6VBSaU1cYjP7qjI969/2YTuwhZWpnWVcdTAwMTCAXHSlsVx1MDAxMl9uPNbVXHUwMDE2Sd9cdTAwMTBAS8FcdTAwMTBzXHUwMDE33qxcdTAwMGJcdTAwMDFUOvqsXHUwMDFm6zmcS1x1MDAwZotcdTAwMGbXrWtcdTAwMTm7fFx0XHUwMDBmtZeHXHUwMDAwXHUwMDAyeZauuCt4tt5cdTAwMGZcdTAwMTItyUUtpKIollJcYupTylx1MDAxY3bn/n+8ksj1XGI95/9y//vJhWXEd4kwQZxcYqzc3THW8fGCnVx1MDAxNmr1XHUwMDA3PCrEe+1KqZ2+1PHwN3vAar5NsLfHuPgtp2O3fVx1MDAxZs0ybk19Nl2fqcNZl1+ly9miU5RcdTAwMDXaZflUWzZcdTAwMTKh6fv4xDr9l/5cdTAwMDM5XHUwMDFl2PFIvHxln1x1MDAwZjNso0yzXHUwMDAwJ4Zu4k6spMyKvo++3X+wqYNWwr1L9zq2LL/s0LNFI8tMLFx1MDAxMqXAXHUwMDBikd5cdTAwMTlcdTAwMTYukVx1MDAwNVx1MDAxMSdcdTAwMTOKU/A3xW5cdTAwMTY3bKHvI0ZMXCKhXHUwMDA0Xbd+Z3vc2Xbjx41RP1x1MDAxYuxeNX5cXCMroW786L/d8OvSILTBkr/C883z2K4+606X6U5+XFxHelx1MDAxY6JI1ldesUWFYFiZpLdgniV/XHUwMDAyXHRcYsFcdTAwMTShWlJcIpBcZnNcdTAwMGJcdTAwMGXGMFPY3arze+X2y1x1MDAxNHFcdTAwMWTIfZ1IXHUwMDBlXG5A+Cbt/2MjcnFbxsVkqXVcdTAwMWJP8Ci9z6mj0INcdTAwMWNcXFx1MDAwM4tpkH9CIDJ3d1x03DeQXHUwMDFiJ4b4XHUwMDE2XHL9YHyJ61x1MDAwN46EYlpvUFuTUmNcdTAwMTlvXoyOR3ejSSFnt3tdVFxmP8hcdTAwMDFgZm9mxlx1MDAwMTpcdTAwMDD1/Vx1MDAwNblAJoFG17bw/dNATlfs3Vx1MDAwZVx1MDAwZt1MTFx1MDAwN5+gXHUwMDFmn7cmT6RCXjJHj82JamfLTzRcdTAwMTJ+kFNlSYj5kamk4ZqQvVx1MDAwNTlhXHUwMDFhXHUwMDBlM/VjyT2W3DdcdTAwMDNNXHUwMDEwxVx1MDAxNG6pXHUwMDBlnvJcdTAwMTL5lr4qOZWMvFx1MDAxNZ3xdTWXqz3ehlx1MDAxZuRcXFpKcSVcdTAwMDEjRCPvtnp7XHUwMDA0cspMwzD0XHUwMDAzcq8l981UccEo1WqDRFUy1r066Vx1MDAwZTvR68f6XHUwMDE430fqvVxcOfy9lIiUps7JXHUwMDE4cdOz2pvW3SOMmz1ltKnV+nFXXHUwMDAyuyvK9CjgfFx1MDAwM0t+Q5xEI/X8knmZXGbPn5l6lI1y6PdcdTAwMDVcdTAwMDdwXHRcdTAwMGJ8M1N1S/FcXL/+N5SDoSdMcMVcdTAwMTk47DvaIHVLXHJOKWPCd8fUP1x1MDAxN+X+/lxuNvqNXHUwMDE53SC9Mrqq3Xfq5ydsoFx1MDAxOH4pJFx1MDAwNrH6XfhRXHUwMDBl0LaI5EzAXHUwMDBmpIjaY5RcdTAwMDN0XGIz0yc/KJ/v/uhryyHmpJKKXHJWcVxmnHidtiM3z0JU77DsPqnic/gjT2omhE2rfmmWrFx1MDAxME69IDfY4lxmXFxcdTAwMWFcdTAwMDUw5CHu/lxin8BNXHLS2rZhf1x1MDAxYciFb288XHUwMDEwP1x1MDAxOIfcoGvYSbWYKDQ7OFa6P+6lnHijdnFcdTAwMTP6VeTgkzEw1VJysNRcXGosvCCXXHUwMDE2o1IgXG7BqXJ3+VxyXHUwMDFkyE23Tm7WrPxgfK5GYoW7wpTWUlx1MDAxMFx1MDAxYdySn1xcjnJcXFx1MDAxNJ1cXKafujjq2XcpcVx1MDAxMv4pTyqZZVxuZzmSTCG8YMiFhSSGXHUwMDEwRUqCQ9xcdTAwMThPYsWRlqGpLlxuXHTCiX+jam2asc9lo9ausk5Xm9FhpdzOlPOJ/l01XHUwMDEzaT/vQS92TS2zkSMghyGsNfdcIlx1MDAxY/CvhaBK4GlcdTAwMGbU8GJcXHCi4Vx1MDAwM9Y2qt5fjP96XHUwMDFi32G+07lz4CNcdTAwMGbfK5FcdTAwMGVcdTAwMDc1e3i85I6Xp3/M1U1cdTAwMTliUGhPXHUwMDBimP7+9ff/XHUwMDAz/ujZrSJ9in memory on disk Catalog Schemas Partition commit new partitions get candidate partitions given an expression Indexes Sketch Sketch ... Partition Parquet or Feather Indexes Sketch Sketch ... Parquet or Feather
A historical query in a pipeline has the form export | where <expression>
.
This declarative form suggest that the pipeline first exports everything, and
only then starts filtering, performing a full scan over the stored data. But
this is not what's happening. Our pipelines support predicate pushdown for
every operator. This means that export
receives the filter expression when it
starts executing, and can pass it to the catalog to materialize only the subset
of needed partitions.
Because of this transparent optimization, you can just exchange the source of a
pipeline and switch between historical and streaming execution. For example, you
may perform some exploratory data analysis with a few export
pipelines, but
then to deploy your pipeline on streaming data you'd switch to from kafka
.
The difference between import
and from file <path> read parquet
(or export
and to file <path> write parquet
) is that the storage engine has the extra
catalog and indexes, managing the complexity of dealing with a large set of raw
Parquet files.
Delta, Iceberg, and Hudi?
We kept the catalog purposefully simple to iterate fast and gain experience in a
controlled system, rather than starting Lakehouse-grade with Delta
Lake , Iceberg , or
Hudi . We are looking forward to having the resources
to integrate with the existing lake management tooling.
Native Networking to Create Data Fabrics Tenzir pipelines have built-in network communication, allowing you to create a
distributed fabric of dataflows to express intricate use cases. There are two
types of network connections: implicit and explicit ones:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bW1PbOlx1MDAxMH7nV2RyXour+6VvXHSXQFx1MDAwZoVcdTAwMDNcdTAwMTRcYj3T6TiOkpg4dmpcdTAwMWJy6fDfj2wgdpyEmNO0cWfsmUCyWkkraffT7kr+sVOpVMPJUFU/VKpqbJmO3fbNUfVdRH9QfmB7ri5C8e/Au/etmLNcdTAwMTeGw+DD+/fmcGgktVxmy1x1MDAxYjzVVI5cdTAwMWEoN1xmNO+/+nel8iP+m+rLsV1cdTAwMTXzxtSkJypAlnrquXGvXHUwMDEwXG5EOJFMzDjsYF93XHUwMDE1qrYu7phOoJKSiFTFXHUwMDEzWPdOXHUwMDFj+/ZcdTAwMTOr02u/ee9+P6sl3XZsx7lcZifO05hMq3fvp4RcbkLf66tcdTAwMWK7XHUwMDFk9qLeM/RZvcDTo09q+d59t+eqIJir41xyTctcdTAwMGUnXHUwMDExXHIkXHUwMDAzNN1u3EZCXHUwMDE5R1x1MDAxY5xcdTAwMTlcdTAwMWNKXHUwMDAyXHUwMDEx5lx1MDAxNFx1MDAxMUjRrDhuQEhcdTAwMDNIxlx1MDAxMSRcdTAwMWMhKFx1MDAxOM5Ituc5nlx1MDAxZkn2XHUwMDE3iJ9EtpZp9btaQLed8FiqTdpmwjN6XHUwMDFlb2pcdTAwMWR6yu72Qk0jXHQtUPGkQyyYXHUwMDE2XHUwMDAzs6Qk6mB43I7X/msy1b45UMdRXHUwMDE1995x0rPltp9na66gXHUwMDE1XHUwMDE1XHUwMDFjpNQoaep+2Dafllx1MDAxYzI9XHUwMDBmnFx1MDAxMom1XGKzcq1a/Wxzjmf1l2hJXHUwMDEwmn5Yt9227XazVZTbXlHimEG451xyXHUwMDA2dqjF+Mez3TDLXHUwMDExt1vzfW/UU+bCoHXLK8uGUXOJ3URP8q2SaEr8Y/b967v13GQtO3sjv5jjR8BcdTAwMDDpXHUwMDA3vq07bFCKOMSMXHUwMDBiXHUwMDAxXHUwMDAwXHUwMDA1UO1C+qZcdTAwMDGm5N1J/3989zZcYlx1MDAxMpivgiBcdTAwMDSBXHUwMDE0XHUwMDAwXHUwMDExynJD0GS//nfjbO/ztHOCmrsn17XDJm9cdTAwMTVcdTAwMWSCKM5A0HZcdTAwMTBoXqGSXmaAhKXBXHRmXHUwMDFhhKDkXHUwMDAyULKAT1RIPVx1MDAwZVx1MDAwMpI9o8SnwuBcdTAwMTNcdTAwMTRcdTAwMDaiXHUwMDE0XHUwMDEwrURAf5BM14bZtV3X2i7UXHUwMDE1iKScXHUwMDBiqT9cdTAwMWNIkm5vQVfWtcfnpcPotdbQ2ta4IVx1MDAwNIGMIVx1MDAwMphEiUnFYzVcdTAwMDSFXHUwMDAwcqHxhXAosNhcbvKxlKuRRT4gOVx1MDAwNkhPcG7kXHUwMDFiXGZcdTAwMWW+2W10NZqc1ih3T1x1MDAwMNpvoKIjXHUwMDFmpoVAvlxcvpfQWlx1MDAwZbS+J5tRiW2FwTaUcY5KX+1nXHUwMDEwy4zWbFx1MDAxOWSt9tWgIIhcdTAwMTKNqvl9tdMvLXDbrMvrh9rkjPTCXHUwMDAzXHUwMDBmN4ZFRyz0KmJp3M6LWFxuYIjh64ilpLJUZ1x1MDAxMbEgWlx1MDAwMllcdTAwMGKIxSSRXGJsJFj8MVOgXHUwMDE3XHUwMDFkedmBXHUwMDFmS1x1MDAxY9uoj4Z+jeFSmCW+XHUwMDE4LtM+O9P+Vn67bV1dwM7uXcPaZT1yd3lv9T829otut+TVXHUwMDE4q1B2XHUwMDBiOZWUYSY2XHUwMDEwRZWG+2dcdTAwMThuqMbhMruFWGapSXZcdTAwMDRigClC+WOEw8Nv/vH5dL/Xx03AxqqLXHUwMDFhlFx1MDAxNt1yXHUwMDExj9wnooM5gDmmIJmQuD75LZaLKDKwjj1cdTAwMTnW4Vwi1UaQ4MfMkFFCe7FkKTiDlIBccmzBW4hcdTAwMTk6nlx1MDAxYl7a06eAdI56aFx1MDAwZWxnMreksVx1MDAwNusptFx1MDAwN0PH1otbcVU48vx+xfJcXFdZYaTPc8w1x+5GKl619CCUP6f9oW2Zzowh9FJuoW4uNHVE7S9Ol+fbXds1nc9vXHUwMDExJYrOj16WXHUwMDEwXHUwMDFhqUVsmYGKY/fIu33VeldG+IBlqYm/zCFcIlxmpFx1MDAwMs111tu4/MRF1+/fmuOL6bhcdTAwMDFMfl13im69WXd5/nRcdTAwMDXnt95fXHUwMDFm4Vx1MDAwYsE1QqCtJi8pXHUwMDEyXHUwMDAw8bRylvvrXCJ3XHUwMDE5sD9cdTAwMTHXXHUwMDFmrjCapc5cdTAwMDCIXHRO9O4k8rtcdTAwMGbHdzWtoV+uvoxUu9VcdTAwMWS7kFxmJ7zoXHUwMDAwhGAxXHUwMDEwaFx1MDAwM6crulx1MDAxMFJcZlhSUlx1MDAwMlRhXHUwMDAwqjxdeVx1MDAxOWtBTlc4zlKT01x1MDAxNcSZhG+JnGRzdGpfXHKvXHUwMDBlLa9pT0emj/rndtGhXHUwMDBmZnNcdTAwMWVcdTAwMDV2vqDEXHUwMDA0XGIg8TaPV0pwK49Xtnm8kto1lmBcdTAwMTaRksg3uGvhXHK3XHUwMDFhk4+nvXP/JDzYb3b6XHUwMDBm3ydFxywkpaF3XHUwMDBmytB8hlx1MDAxNrPfk6GV2MB6kpcmeJacXHRjvcdFV/J+XHUwMDFltDadqaWY6lxyvcSyXHUwMDA17iVLnKmXy4hXZ2xX5nxcdTAwMTjV8MKJyJ/y2TuYXFzc1I8+3bpcdTAwMWb7u+d3XHUwMDE38O+Di8LfqEWMXHUwMDFiXHUwMDA0R7fANKpqV1x1MDAxMyaQXHUwMDE1W/LvOWtBVEtBtfPMXHUwMDA1RlFeJ1/GVlx1MDAwMC2w9kL+zFx1MDAxYmz/K2OrxoXJ2OZcdTAwMTLll2Zs0cqogVx1MDAxMcBltFxy57Ze+E1cdTAwMDT+0SknZ7tHwd1l/aZmtnpFt15cIl87KC1UzMCQXHUwMDA0evdNXHUwMDE1bCFkwFx1MDAwMFwikdbNcptd5C5DgCfi+oStWHknVFx1MDAxYlx1MDAxYkWYQpbffahdTWt73Vx1MDAxYvMw8LsuU8zqqcZ50Vx1MDAwMYi9esPqXHUwMDBmytdcIqi1iqJNXFzjKOFp41FAma59XHUwMDFla0HStXLlm4ja51x1MDAwMlxmXHUwMDEyXGLye17Txun0+Fx1MDAwMKLG2dFdYI+Dh4NcdTAwMGLnc9GBj2bfRCyu51x1MDAxNb2ZXHUwMDA1XGLebphUYluZrd2kq7bzXFy/alx1MDAwZYeXoda16ktWrvpgq1F9iVx1MDAxNXXip7rzjHdcdTAwMTGwqDiZ97jz+Fx1MDAxZlx1MDAxZVs7eiJ9implicit network connection explicit network connection
An implicit network connection exists, for example, when you use the tenzir
binary on the command line to run a pipeline that ends in
import
:
pipeline illustrates the concept:
tenzir 'load gcs bkt/eve.json | read suricata | where #schema != "suricata.stats" | import '
This results in the following pipeline execution:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2ba1PiSFx1MDAxN8ff+yks9u2Y7ftl38k4jrdHnXW8MFtbUyE0XHUwMDEwjUlMgqBT892fk6hcdTAwMDRcItHgXHUwMDAyK7PEXHUwMDAyobuT7nTO/9fnnIRcdTAwMWZr6+u15C40tT/Wa2bg2J7biux+7UNafmui2FxyfKhcItn3OOhFTtaymyRh/Mfvv9thaOV7WU5w/bCn8cy18ZNcdTAwMTja/lx1MDAwNd/X139k7yN9ea5vsrZZad6TlqpYelx1MDAxOPhZr5hzgqlklFxmW7jxXHUwMDE2dJWYXHUwMDE2VLdtLzZ5TVpU879cdTAwMWNcXF5dXHUwMDFlXHUwMDA2n7e58vZcdTAwMDJcdTAwMTPuJ9snebdt1/NOkjsvXHUwMDFikVx1MDAxM1x1MDAwNXG80bVcdTAwMTOnm7eIkyi4MuduK+mmIyiUXHUwMDBm941cdTAwMDOYgXyvKOh1ur6J47F9gtB23OQuLUNoWGr7nexcdTAwMTh5ySCdcIIsgSlnmlx1MDAxMkYxXHUwMDE5Oef0XHUwMDAwRHNcdTAwMGJcdTAwMTGMOdaUIcWQKIzsY+BcdTAwMDVROrIksv04tCO4XHUwMDFh+fiatnPVgUH6rWG731xiUU0j8jb9x3Nm+cC6xu10k/Gy2GSTT1x1MDAxMEFcdTAwMTQrKvOBpFx1MDAxZIS7rcxcdTAwMDb+zqc8sq/N7sPFiVx1MDAwZi7P7lx1MDAxYjvoVFx1MDAwZr7ei1x1MDAwYnKws6XHJtFvPU6i3/O8fPRpxadcdTAwMTFcdTAwMGLLj95cdTAwMGJb9oM1YKGFlFxcSEq4XHUwMDFl1oPVXVx1MDAxNVx1MDAwZudcdTAwMDXO1Vx1MDAwNFx1MDAwM4pcdTAwMTM7Suqu33L9TnFcdTAwMTfjt0pqPDtOPlx1MDAwNtfXblx1MDAwMsM4XHUwMDBlXFw/KbbIjrtcdTAwMTlFQb9r7NaEI5fWhenhckmlW/5pPTeg7Mvw899cdTAwMWZeb81ebVx1MDAwZeaIxjY23f5srD9Sob+3n81I67XR/z8/TIdcIlxmtCllXHUwMDExTIHkWoqcVq+yqKcvtq9ss3mwXHUwMDE5+qc38bE6vMHLwFwirFx1MDAxNs1cIiWU0ZNYhC3JmOZSKlxyL5mfz1x1MDAwYmiCkWnFsMxNdoWm5UHT66jYKFx1MDAxOFx1MDAwNdJjbKJcdTAwMWGqqaBKYPAtXHUwMDEwZ9Ohalq0/Tuo0oiXkopcdTAwMTApmFx1MDAxMCpcdTAwMTfGa6TaQ59cdTAwMWLf0c432m9ttPvyTN5cdTAwMWV/sktI1bWdbi8yv1x1MDAxMKV+wyb9e5FQXHUwMDEzSfZEKVXNY1x1MDAxMoAlXCJGhrmi0i9EpSkhXCKmbK9cbsNcdTAwMTn3zvB03VFcdTAwMGJcIiuJqZBKIcRcdTAwMTE2XHUwMDFimP87XHUwMDFjU6VcdTAwMWVcdTAwMTdcdTAwMTdcZsxT6Vxct69h7Cw4kE7ja7jLP13gxqD7vdn+XHUwMDEyLYPDRVFcdTAwMDFl8/a3XHUwMDE4clx1MDAxMJdvjf0wXHUwMDEymChN1crBWkKUrWK/kthPXHUwMDE0i59IJDVWjKIp0lD1Y2ZfNPY3tztccr/VbJ8lTsPxloFERCyYRKVZqLdEfpJLgdXKw1pcdTAwMTIsYWVcdTAwMTHOXHUwMDExI1x1MDAwNCN4XHUwMDExPbo3njaMW4WFXHUwMDEwiWhdLH2CXHUwMDE4QVx1MDAxNOJcdTAwMGapSfVcdTAwMDTWXHUwMDFkXHUwMDEz9c+k4Z/40TFqOvWr3cPzo/dcdTAwMWVcdTAwMTbOimBcdTAwMGKKXG6x0im0VrmqJWFcdTAwMTZZhYVcdTAwMGJJb+Fi6TC9pYVgSpEp0lsnW4Po9vzUJn33OGhGza9Hd1x1MDAxYmVcdTAwMWN7V95cdTAwMTggamEsK41cdKtxTFwipCVcdTAwMTjPyvdacWx9xbGnqFx1MDAxMvRZXG4yULRcdTAwMDbnXHUwMDE3V09woZ3OkXdQv0q2T0nv821oXHUwMDBld/w/l1x1MDAwMWR80WFl6VxyxWqpelx0XHUwMDE3RvCRe70rmL1nmP2jSG32+az3XHUwMDEwXHRiwsrJw5Ek07lQe6y5Te+p19jc27o8Nd557/pibynIU3yuat7kKU2tvyWhRZBgKH1bkWg5SLRKaU1o/Y9ANpqwKt4hZJhqeKvuQN3dNra9fVRP7lx1MDAwZs82j8OrZFx1MDAxN3V23ntGa1ZcYltURosrKUBcdTAwMDJyXHUwMDE1XG4uXHUwMDA3s+ZcdTAwMWNcbqop20ttaUHBlrFATGuMx0dnIVBcdTAwMDKVijHFgYdiuu7nyzA7vV6TIEZo+YOlXHUwMDFhKIYx1tXvLoZtNUhcdTAwMWM32t3fo4KdXHUwMDBmtjpfuv33TjH2XCLFKK5MMYMoTNjLTpjRxjHt51x1MDAwNMNkXHUwMDAywp5cdTAwMTGMXHTKKKF5UmGmXHUwMDAw+zE0qie7IY8lP1dcXJupL1b6XFxBJTEnZpBM0rLQpYFcdTAwMTVTXHUwMDA0bJuz/GbOq3FV0vdvuslFs4dcdTAwMGW2jv3+4OaGL0dcXEWZJTnjgGrNNNKFhy+Fslx1MDAxOFx1MDAxMyh1TqXQI2KfZWaaXHUwMDBicLaf61x1MDAxOdzsfDRP6WmmXHUwMDE5V4r/Mr9WaVx1MDAwN35y4t5nK4hcdTAwMTgr3bavXS9j6rA4M2U4Jfc6XGaiXHUwMDExo07LNz2342fmXHUwMDA14zXRmMUnrmN7w1x1MDAwNklcdTAwMTDmtVx1MDAwZfRkg8tcdTAwMWXtPlx1MDAxM3FcdTAwMTC5XHUwMDFk17e9ryW9pp7+zvBijVxcq6ZcdTAwMWSbLFxmSJ3IN2lTSlQsfdKmXHUwMDAyR1x1MDAxOSyRVc95XHUwMDFj9rpsn3v1XHUwMDAz8u3jxifc1Jr735dBm7CGWiBcdTAwMThMwX1cImBiuFx1MDAxMDFcYm5xXHUwMDA1alBcYlx0jPh8blx1MDAxYlFpVdQmXHUwMDA2ZUpcdTAwMGVcdTAwMDHsfNbbZVx1MDAxMadcdTAwMTfYrUVLc7zPOVxuU4nyX3lKhDHDWlZcdTAwMGbjlVx1MDAxNsb3u577cWvL9r9cdTAwMWZd/k/Ul+PxOsktKiRijDBcYpB5fpTMJlx1MDAxOLeI1khRrrkmcj6r5lx1MDAxNMLk4EIpQtkv83DKm4RcdTAwMTmZxVx1MDAwYnO8zzlcblPzXHUwMDE3fn5ccnZKhebVI1N5XHUwMDE2XHKEf9fo29/I/p/o7HJwdFlfXHUwMDA2YcJSaUmNwGOFXHJcdTAwMGI0LkxcIrCllU5cdTAwMTnFXHUwMDE5krCAzkWZTFiwXHUwMDEwVtMmh1xiXHUwMDE1g1x1MDAwZf7bayZcdTAwMDSRo7mNxWiz0OlcZsSZXaRJ6uREli+bXG4jXHUwMDAxXHUwMDFlbXWH9lx1MDAxNVx1MDAwM3ifeaP824NcdTAwMTJRoedZprcnJIcwRlx1MDAxNlx1MDAwMVx1MDAwNlJMwJtOt2erpFx1MDAxNlx1MDAwMsO1UNWlOGZeM9BcdTAwMWTC4C9gTkdtsqru/NT0XHUwMDFlmj7Y6NpjQqVmh+FJXHUwMDAy3dSecla1W9f061x1MDAxM4DWzrba2qOFp5ZkslTXz7Wf/1x1MDAwN1xmXfFcdTAwMDIifQ==import load read where
A historical query, like export | where <expr> | to <connector>
, has the
network connection at the other end:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1a61faSlx1MDAxMP/uX+GhX2u670e/KWq1x1x1MDAwN7dYqb2npycmXHUwMDBiRENcdTAwMTKT+KLH//1Oolx1MDAxMIgg4EUrXHUwMDFlomgyO7szuzvz25khf1ZWVyvpbWQqn1cr5saxfc+N7evKx4x+ZeLEXHUwMDBiXHUwMDAzaFwi+XNcdTAwMTJexk7O2U7TKPn86ZNcdTAwMWRFVtHLcsLOfU/jm45cdNJcdTAwMDR4/4Xn1dU/+d9cdTAwMDFZvlx1MDAxN5icN6dcdTAwMTaSMOKyTD5cYoNcXCzWQkjMkVx1MDAxNn1cdTAwMGUv2Vx1MDAwNFmpcaG5afuJKVoyUuUribc4222ttTqhdNZ2jn+qo9NCbtPz/Xp66+cqOXGYJGttO3XaXHUwMDA1R5LG4blpeG7azjQo0ft9k1x1MDAxMJag6Fx1MDAxNYeXrXZgkmSoT1x1MDAxONmOl97ms0R9qlx1MDAxZLTyMVxuyk224lx1MDAwMltKccxcdENcZibOizlnXHUwMDAzXHUwMDEwTS2thSRcZlx1MDAwYiWxpiXFqqFcdTAwMWbGmWJpbFx1MDAwN0lkx7BcdTAwMWKFeqe2c95cdTAwMDJcdTAwMWRcdTAwMDO3z/eBIVx1MDAwN5a+4Ll+mDIr9GpcdTAwMWKv1U6HaYnJ115T0FVoxPpcctn40a6bm8CvYsFju2N2861cdJK9s+PuyVx1MDAwZfqub4664lx1MDAwN9nb2dRDS1x1MDAxOLhcdTAwMGZLXHUwMDE4XFz6fqF81rA1YGDF6JeRa9/bXHUwMDAy6FwipOSSII14v1x1MDAxZIzuvDycXHUwMDFmOucjzCdJ7Tjd8Fx1MDAwMtdcdTAwMGJa5S4mcMe0+HaSVsNOx0tBjVroXHUwMDA1aZkjXHUwMDFmdz2Ow+u2sd1cdTAwMTEjj22LsuFcbo/KruJutTCf/KF//+vjZG42kZ0gXHUwMDBiXHJdbLb+bEhcdTAwMWWZQt7zZzPAvTL4/+7jjEhENC6Te0ikKKLwS9TUQJT+sK9s451cdTAwMWbt3P7Y/3pyWK1cdTAwMWVH3kJcdTAwMDBcdTAwMTF5ZSBSQlx1MDAxOS1GXHUwMDAwXHUwMDExtiRjmkupNHxkMZ0ncYlcdTAwMTOMQPklLi1cdTAwMWUuTcaJtZJNID1cdTAwMDRMVEMzXHUwMDE1VFx0rKVCnM2GU7Pi2t/BKa1omdqDKYJkZm6YXHUwMDE1x/IknELB4W5yVr26XHS/0+szXHUwMDFkOYz/k4zBqbbttC9j834w6lx1MDAwMzbZz5P4NFx1MDAxMsd6XHUwMDE4paZcbpaYoFx1MDAwMnRZXHUwMDA2S+9cdTAwMTOUZsRcdTAwMTAxI78qqTNcdTAwMWOZ4dnEUYtzXCIxXHUwMDE1UimEOMJmXHLzv1x1MDAwNGO8TC3yPrggXHUwMDFjK6LCiTDW3GQobf8+oNtOUttz1/2L7e7JXCKEW1x1MDAxNL1cdTAwMWWUjc35poMxLFx1MDAxOSaUqVx1MDAwMVx1MDAxNZc49pZxjCyB7DXyRsg3xlwiXHUwMDE51VJwJmdcYshcdTAwMWGdajc8vjqodt1G57C5tXdIwFx1MDAwNFx1MDAxN1x1MDAwMMl4KSj7a3njdFx1MDAwNSwlhaBSLWOyxcCy/5Wozb9g9Vx1MDAxNlx1MDAxMkFMyVjg4VxiSTjqXHUwMDA36iCTcOew07g04bpcdTAwMWLXt2rJZtdcdTAwMTGn5MvZXCLgXHUwMDBlU2+lcv6cglx1MDAxNcGYgfZqYJpLIHrLQISVRThHjFx1MDAxMIzgQ/RgbzxrXHUwMDAxalnQyl1cXJXJPVx1MDAxY6NcYlx1MDAxMVxujj194d2urd3u81x1MDAxZHeTst9J3aFcdTAwMDebabP71lx1MDAwYlrzwrBXKmhRToRcdTAwMTCcLlx1MDAxM8HFwKxcdTAwMTdOXHUwMDA01Yz8UltaUMpcdTAwMTBcdTAwMTaIaY3xsHZcdTAwMTainGWhOVNcdTAwMWPwUMwm/mUxzM72a1x1MDAxNIhRPD5cdJSMM64wnf41XHUwMDA2+0sjQG6rvoG9XfPte3hwXaNcdTAwMWJvXHUwMDFkxOjTIEbxtCBmXHUwMDEw8OKngzCjjWOaj1x1MDAwMVxmk1x1MDAxMVxi9jjqolSChemXXHUwMDAxsD99o+rZXHJ5oNwtcW2usdjY91x1MDAwNqZy5tTcpCNcdTAwMDNcdTAwMTLCRJncc2bBKFVDtj3Jl8PaxubNb36x73ZcXHZtXHUwMDA0a12tfVuExFxuIM1cIopcdTAwMTClKaCwRv1I996dXHUwMDE5s5BASiDCmYZcYkWWXHUwMDE0m09pmlx0S8nC9vsuXHKRdpHb9lxu1DR7X0zB9V7ikmZcdTAwMTikda+bn1wiYoi6bXc8P9+HPjk3Z5hcdTAwMTL43eBxkJHXfa9cdTAwMTXkXHUwMDA2XHUwMDA26pp4yOhTz7H9PkNcdTAwMWFGRatcdTAwMDOCbIja491Hflx1MDAxY8Zey1x1MDAwYmz/aLTQLNbf6e/VwFad2onJXHUwMDEzXHUwMDAxIPPneSfkXHUwMDAzY4/aLJXWXHUwMDAyz1D3OL6ijebPdu3gtN7aTpDq2rU6WVx1MDAwNPckhFtcblx1MDAwZVNCXHUwMDEwkrAoXHUwMDAzXHUwMDA3ap4zXGJIVOFcdTAwMTRGXG7SSySRKCk2XHUwMDFm9+RcdTAwMDKy4Wm9UylwXHUwMDAzwd5NpeNZ3mluojBOX9s9y1Jf0j9cdTAwMTlcdTAwMWH/Ri9cdTAwMTOMQ+w1wze7rLFv7PpcdTAwMDU/XHRv10/R7c9LXHUwMDEz1vxF8E9cdTAwMGXxLlx1MDAxN5hRXHUwMDAycCThZtg9JbIoUkRnTlx1MDAwMdFyWa/5uCdW1tSHJ4KMnnEk3s03XCLPcs80fG3XXHUwMDFjlDhcdTAwMDe3zLdnlF+CXHUwMDExjnVLqbLtn+WFi1x0W/82M9Ti6f6ERCXJ86yjjUhDMUZcdTAwMTZcdTAwMTGaU0gwdH49ckItXHUwMDA0hr1Q05+RQ7Y1XHUwMDA3j0NYc405XHUwMDFktMlpPS7ITO+e9d5GV1x1MDAxZVK3ilx1MDAxZEX1XHUwMDE0xFR62XHlyjPXXHUwMDFiI6CsmV+VlVx1MDAwN1x1MDAwYs8syeRJ9d3K3X97k95cdTAwMDIifQ==where export to
Tenzir pipelines are eschewing networking to minimize latency and maximize
throughput. So we generally transfer ownership of operators between processes as
late as possible to prefer local, high-bandwidth communication. For maximum
control over placement of computation, you can override the automatic operator
location with the local
and remote
operator
modifiers .
The above examples are implicit network connections because they're not visible
in the pipeline definition. An explicit network connection terminates a pipeline
as source or sink:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1daVfizLb+3r/C5f36klO75jrfXHUwMDE4XHUwMDE00dZG0Xa45yxXhDBcYlx1MDAxMmRcdTAwMTJ4V//3u1x1MDAwYltcYkNcdTAwMThcdTAwMTTs+F5Y3XabhEol2c+zx9r5+9ve3n673/D2/7237/Xybq1SaLov+3/Z7V2v2ar4ddxFh7+3/E4zPzyy3G43Wv/+17/cRsNcdTAwMTl/y8n7T6/f9Grek1dvt/DY/8Xf9/b+XHUwMDFl/lxmnKtWqXvDY4dbx2eSWk5vPfPrw7NyLrhQkvLRXHUwMDAxlVZcbs/U9lxuuLfo1lreeI/dtJ8/V1Qmrm5cdTAwMGUvXHUwMDBmXHUwMDEzydpFg7Z6J4GzXHUwMDE2K7Vart2vvV6Smy93moG9rXbTr3rXlUK7jPthavvoey1cdTAwMWYvfvytpt8pleteqzXxXHUwMDFkv+HmK+2+3UbIaKtbL1xyx1x1MDAxOG/p4W/MOExcdTAwMTj8YyRTRlx1MDAxMTbaa79PKXGMXHUwMDEwuEdrJVx1MDAxNFx1MDAxN1PzSvo1v2nn9T9k+Fx1MDAxOc/swc1XSzi9emF8TN4r8II7Publ99Xq8ZTKXqVUbtvbP97W8oa3XFwozYyWjI522PFcdTAwMWKZwvC5/3d8n5vuk5ex36h3arXgrapcdTAwMTd+36qJXHUwMDFkXHUwMDBmdsdBQITGQ3VcdTAwMWFcdTAwMDX39XmDNFIpoVx1MDAwNadMj/ajWFWnh6v5+epcdTAwMWNcdTAwMTFptd1mO1GpXHUwMDE3KvXS9Fe8eiFkT81ttZP+01OljdPI+pV6e/qI4bjxZtN/KXvuzEXjyKH7XHUwMDFhdrgxZuxn/L+9sZhcZn9cdTAwMTn9/79/LT+aLz1cXK55vJ44XHUwMDFlhZJcdTAwMDQ/sN7pmCNcdTAwMDRVwKTSmlx1MDAxMEHAi4FY61x1MDAwMlx1MDAwM/P9XHUwMDE2/PfXX+vRj1x0XHUwMDAwaop+XHUwMDAwuKBUKTYmqGX8w7xcXLHRyNXcXHUwMDE3XHLN7M/Tq16vfVx1MDAxOXX+XHUwMDAxXHUwMDEzXHRcdTAwMDKaXHUwMDE0qPFcdTAwMWNGfIQ8qTiTTEswSlx1MDAxMzFWXHUwMDBiv+mJXHUwMDEypaXmjI7pYcdPkeEn0Fx1MDAwZVx1MDAxNYJwSoHgX2qC34bpZ7tstFx1MDAxOOBcdTAwMTe4XHUwMDExSmmDf1x1MDAxNTE8ON6MrCxcdTAwMWJPTc5urOLmjUaXjqZcdTAwMWOtOUi0XYg0XHUwMDE0xMS1OlpcdTAwMDBcdTAwMDGlXHUwMDAxJ61AM/1HmE9cdDa9dcR8TKHlJY1e3fLyXG45eVBcdTAwMWO0qvlsx/yg/nNa3D5HnvkgXHUwMDEyzLeK6aUkQzmXgVx1MDAxZDtqi1xmtdEp22hnqm2FsIie3vpGWMjOYEDA2DFZxlfpot+4dr1cXO6lRMup+3NcdTAwMTaH3EvU+Yovdlx1MDAxNWGar6Zn9pmEZZjV8ZzvbLFcYlx1MDAxMtaOgOzPtX1FqUItJiFcdTAwMTSAXCKrXHUwMDFiTMeXN1x1MDAxOf9cdTAwMTGOyVX1pH6byMlkuuFHnYDElKv4Z+jn456i1lxm8FwiYFx1MDAxN8iKIDntXHUwMDFjxbdrjYijqMJDZFx1MDAwNFx1MDAwNKVCw+ohstOn5lx061ZPb1x1MDAxYb2Ls9ZcdTAwMDNkst3HQeR5XHUwMDBmosB7q5hdKEpcdTAwMWGFPeC575gtMsy281x1MDAxM1x1MDAxN13gxvhcblx1MDAxNoT0tUBcdTAwMDSv4Sdmv2u/QfRzmcczilWu5c/Ll1TU6WqJn1x1MDAxOKW4XHUwMDE206jjkDTGXG5kx1eR4atcdTAwMWT/2J9ru4mKT29cdTAwMWTxj2JcdTAwMTJhydZcYqyft/tcdP8mc1x1MDAxYn9cdTAwMTCdh6J8hOejXHUwMDE0jzpcdTAwMDEt9Fx1MDAxM79OQlx1MDAxMdDoloLvXG5cdTAwMWVcIslOOz/x7Voj4idqOr11zHtKXHUwMDE5YCRcdTAwMTBccl7Ge/R5cJJMPZZOYo3W2Vx1MDAxZNRrXt6NfCnXQj8xSmZcdTAwMTdcYlx1MDAwMYxcdL1cdTAwMGLPR5HZdn7iolx1MDAwYtxcdTAwMThf0VC+olx1MDAwNKhmazmKz91y5vDy4aDmytaDien498PmddT5aomjyKLEWEqgOcbNLrJcdTAwMTVFxtoxkP25tqeoYXrrXHUwMDFiXHUwMDAzSVxynGi6RmD9Xrm1+kX8sJhMy+OXgXxMXHUwMDBiXHUwMDExfYNpkaP4WfSzgXxcIjJcdTAwMTOXfFedXHUwMDE1RW7a+Ylv11x1MDAxYVx1MDAxNT/RTG9cdTAwMWTZXUoyIYlYnfWusrlis9/MZVx1MDAxYSenxydMXHUwMDFltu+7ka+4X+gmRsroYlx1MDAwNllccpTcuYlcdTAwMTEktp2buOhcdTAwMDLXpSvXPrN5fEVcdTAwMDWZ3jriKyOk4kSt7iaW0nnvoFx1MDAxNqurwenZ+YCleCZ3XHUwMDFjizpfMWpcdTAwMWNKUf1QQpRCPpggLEqVI6UmiFWuOJVmal5jMvJcYlx1MDAwM1x1MDAwNotcdMszXt4rzlx1MDAxMlx1MDAxNlx1MDAwMFxulF1cZsqNQUNLjM8y4i8tXHUwMDFkXHUwMDA1VGqlhdGCzobzjaSUw0ZqUv9cdTAwMWVJ15tcdTAwMDC96eZfO5LbqPVcdTAwMTb23O0nNv3IN4Z5XHUwMDFkujhGMUo1Z2p1XHUwMDFihSd+dE+flOpccrpxMIxkSK5RjD7mtbU9kfykXHUwMDEyIFx1MDAwM2bIXHUwMDEw80I5hlx1MDAwZlx1MDAxN1x0gaB46+XUxDZcdTAwMDd6rlx1MDAwMXBcdTAwMWUgiFx1MDAxMmZMtGPUU5xcdHC0kCnhwZjeW4VcdTAwMDFBbuKGbCBu9Fx1MDAwNUFcdTAwMWaY8u81+pnXlarZVueplmlfP2XOXHUwMDA3sYfry3LxeoxcdTAwMDR7O/x8Zyg9XHUwMDBlXHUwMDAyXHUwMDBmXVx1MDAxMMY4XHUwMDA1XHJyXGZcZnsn3YZFXHUwMDA0PiPB0amgXHUwMDE0tSFcdTAwMTiYuSlfim3mXHUwMDBinP1Mi9qm2Fx1MDAwNsLjQENyY0SsUTHwdO+mS3k3UWp2e278KkZdKDQjTzdLSpb4qk7RR+jGoLutUYy5RGFHQ2Z8llx1MDAxMdvM9kRcdTAwMDCNUlx1MDAxZqyA/f9EL1/Tplxifc5T315cdNWhYVx1MDAwZVx1MDAxNrpcXM1cdTAwMDZf1IRcdTAwMWS6XGbTXHUwMDBm/dOfPdVwXHUwMDBigiaz6ibOKEmzqGN6SXaJ6+hcdTAwMDQ67Dy4lGRcdTAwMTfAjSBcXHdxXHUwMDBi+3Pt5JJcdF+txlx1MDAxOSFUcLZ63Fx1MDAwMu5TnUr2MZnn593vsZPYc6/3XHUwMDEw+fWyXHUwMDBis0ufRT9cdTAwMWIoQ+RGXHUwMDEwI1x1MDAxNN2xU1x1MDAwNNlpl156u9ZopJfwOsJ4z95cdTAwMDP03tZYpXuRvWqZyv1p6aj0WOjHr55ZpXBcdTAwMWJ52luUXoqS1YVcbohLJXe0XHUwMDE2QVrbJZdcdTAwMTZd4MaSSzyA5im2QtEktmZ6ZbLq93IuT5HUWeGulj0p3eSKpVQ+6mQlkY+Y5lx1MDAwMoQyoGQglTZMhnPUh4pcdTAwMDPeXG67zliGL639SNyH0Tl0XHUwMDA1coavwNiOJobtalx1MDAxMKPIWEI7RnFt61x1MDAxNSihZtxX1n5ixNGgrSgxxDs+W71cdTAwMTTwXHUwMDBix1PGXHUwMDAxXHJDmeSoSZlZathRXHRcdTAwMGU6XSCEpjZcdTAwMThcdTAwMDJ8m+OBmFx1MDAxY3C54UlcdTAwMTFqXHUwMDA2NTJcdTAwMDGJ91x1MDAwN6hYcbiV+K/t9drz6I+J8Fx1MDAxYWxg2jZcdTAwMTFaI/LNXHUwMDFmK/HsXHUwMDE15PtHg/tW8aJ8WG/Aplx0sOBbXHUwMDFjbJJcdTAwMDGpYY6WeGvRdqaMqTG2+6/OnyOpYOiya6q50lx1MDAxZlx1MDAwYn1zkidCzVKgXHUwMDEyKOzGMI5mPcNcdTAwMTONL2VEiDRw5rfyIC0o5Vp9zfVxRb/ezlVcdTAwMDavXHUwMDA1/1x1MDAxM1tcdTAwMGbdp0qtP/FEh1x1MDAxMox38M5r+qfn+1x1MDAxM9vjtUrJSvN+XHUwMDFl5+s1J1x1MDAwNL1dybu10Vx1MDAwMW2/Md6bxzO56MU0Z++M36yUKnW3dlx1MDAxOXJW6/xcdTAwMWONNJVcdTAwMTN4NFx1MDAwZm7LXHUwMDFiukY2rfQ+m4SGr5+XXHUwMDFj1bTgq0OyW74uXHUwMDBlKo/nd+JKnbDyrai0L7tRt0mQTz8vXHUwMDE5XHUwMDE1hkg+xyaZ0+5DSctcdTAwMGW70ND7LVx1MDAxMkvp49u/UZOEf8hpXGJTmtyEL7Rktq1cdTAwMTUzayD0olJ9rLNOOZMw19xcdTAwMDNz2SnLUvSVptZcdTAwMGVcdTAwMTgwgjFEj5CTblx1MDAwM6XoNth2bISif4fajE7NbDNcdTAwMTDFs1xiSlxmVVx1MDAwNFGAqpnOSVx1MDAxOFx1MDAwM3WQQbRRaHfisdxcdTAwMDQqZd5cdTAwMTZcdTAwMGYo9G/411eiQFx1MDAxY1x1MDAxY4SB9aqRmMQ4dLlMqWavXHUwMDEyn61RJ065kjo171x1MDAwMqtcXNBg/jXAS8nqeeDibVxyaOOkfXxcdTAwMDGlxtmZvros3t1EXHUwMDFlrFx1MDAxYyVDMIHus5CCmUBD/df+WcpBn1x1MDAxYVxyXHUwMDBibTTaXHUwMDE38LFcdTAwMDLSULCi0ka3hlOUTKVhJazOXHUwMDE0k1x1MDAwMZWMXHUwMDEwLfXX1LdcdTAwMWJcdTAwMDFr7vPBmvsksFx1MDAwNvumTZd9XHUwMDFhTShcdTAwMDQrXHUwMDEwl2FVJ7zY4V3zMXF5out+9rR/3+xtuiX6Z2OVUuZcdTAwMTDUd1Irg0Io6JZcdTAwMTTrRrCKip/zXHUwMDFkVv+hWNU6VLEqtFx1MDAwZVx1MDAxOV9j7eziativXHRVxqnDXGZoLqUwilx1MDAwN4QwekjVWlx1MDAxMsWo2HpcdTAwMTe43zv2XHUwMDAytZZ7q5XpT8jka+hktOfX7//teOBcdTAwMGbwXHUwMDAwXG5UKFx1MDAwZlx1MDAxMETHWl2HXHUwMDEyZy2vXv1cdTAwMTE/rqqDXHUwMDEz2i30L/VVI/JEgNrYodKWg6A/TIMwXHUwMDFhXHUwMDEyXHUwMDAxXHUwMDE4h1x1MDAxOMtcdTAwMDSCMqpYYGnLRuNVzFx1MDAxMdrYiFx1MDAxOUOwXHUwMDEz+T4qXHUwMDEw1lx1MDAxOdbsi3bm3owz3PRcdTAwMGKdfFx1MDAxMJOf5Fx1MDAxMc+cd4uotamkMNhSYZdyab06bFWanmfrVzfVa1KN36RcdTAwMGVY77IpXCJcdTAwMGZbprXDiO0wSFx1MDAxOedcIlD4Z78vXGJ3pNZKK4G6UWiyJdhyXHUwMDA3TWSUT7A1XHUwMDExLFx1MDAxMDhcXEeBXHUwMDAz2IUx8EVcdTAwMTPjXHUwMDFigW3Sr6NcdTAwMTH5+bCdPe9cdTAwMTZhSyG0XFxcdTAwMDUlQFM0m9YoKk5cdTAwMWTfPl3c69rAc5OP+ZuLTDp5UY88bFx1MDAwNVx1MDAwM4chdrnVqchjk/laTlx1MDAwNZrdXHUwMDEy0KA1glx1MDAxYWk+tjIyXGa2XHUwMDAyqWOJsp3N11JcdTAwMDS4IfBnk0U4Xc6CsrrVdO2JW6y6IZCsecX2XHUwMDE2XHUwMDAwOXXKraZqmVxmXHJYccZsZ+1AXHUwMDE10zI4dtzzpMn19H2CpZuskislepnzXHLDceO5Wr2w5eanLFx1MDAxYoTVUrWoPKWmgv3DW51cdTAwMDdWMb6tIaZcdTAwMGV6+IqgcrBLaiWMJrD3toRYO3h7cLetXHUwMDFiN2hNXHUwMDA0apkm1y3/ONZZX/bdgk7+PH2sVnPpwm31zVx1MDAxM/+CXHUwMDBijmPwsVx1MDAxY3HTy7dfgTFPW4d6xsC4UWDWeWNcdTAwMWX1bvz0XT719OPeXFxcdTAwMTWQJO+fUpF/XHUwMDEzwmJ2IJsshV+LXHUwMDFk9Cw9UFwitdhMR97ZhcRsXHUwMDA2ISuGxuZcdTAwMWGEXHUwMDAxqTh/fLlIxdJ9XHUwMDA2nfhJ8Ua7ZzV2vd3I2LtcZle2IFx1MDAwYkuBKVijn8f8a446XHUwMDEyuHFsXHUwMDBmbk2Jda9n8jqfXHUwMDAxXHUwMDA1W+SKUEQpXHUwMDA3XCK4XGY4+It6kCFLSXSBv+hbvYO+pZzYusBqjVx1MDAwZlBm/lM/6OLUjjpcdTAwMGat9/qUT5VCIahcdTAwMWEmrdhllD5t2IbPaiVcdTAwMWKX8Xchl1x1MDAwNjyomeZcdTAwMThMXHUwMDFiQ/RcdTAwMWFcdTAwMDVcdTAwMTTJg+/VxmkhJeDo8mfiIdvvXGY6XHUwMDE3kXc5kaJcdTAwMWP7XCJcbrB9R8CQSZeTXCK0mWZaSGG4IIRuJ1IkhKOGetRoQ22yZ1x1MDAxNr2zLqdcdTAwMDRjX/Hz9Vx1MDAwM0Oru5zx0/Ps53qck2fchMNcdTAwMTlcdTAwMWG2JVx1MDAxMIpGQVx1MDAwNVx1MDAxMYauXHUwMDExtp1vzEdcdTAwMWSMNttcIoiRknAmUImNR3nTpFx1MDAwMndcdTAwMWKqhotcdTAwMTeEmppZlLItaFx1MDAwYjBAnb+J7jXvT7wuXrc2IZfTide/XHUwMDE2jbs4nrFw3C2YrXMtgl2SaCHbMFx1MDAxNdrDwq5Tolx1MDAxY0331e32n5VB9Wc5oTt3/VpcIlx1MDAwM83mQ/+wXHUwMDEwebpR0vY4RFx1MDAxOZmbJVx1MDAxYdFcclx1MDAxYmaJgu/giVxclkgwrpVcbi75+lpkXHUwMDEzeVL4R6WgXHUwMDE2vDQh3CHQnFx1MDAxMlx1MDAwMmJccmf+4DZ//nSVPTrtJVx1MDAxZu/ybZPyjltHkXfmKbVlmFx1MDAxYdD7XHUwMDExiqhxnO/1+9LhQJRGZ8EmqHi4P/ChwJatK+HodXBtw7pcXM4hXHUwMDA1SVx1MDAxZM1sh1Yp8NlcdTAwMDCfkzlGzmDchHRcdTAwMThcdTAwMWaBb/+5cJVuXpRcdTAwMWLlRzZI+KnaXHUwMDE1gGtcdTAwMDK43WeV+JG5q6TjpPHQV730QbJ5dlx1MDAxNjzg8ORcIiu69WLn8Tye4lx1MDAwZvcx/ziffoP31lx1MDAxYvVNXGY2Q1x1MDAxY4ZCMC331ZZQbTE+TlCrMCGUIYwram9W8PvUmsFcdTAwMDLtX4JqxTCydNk0cWxcdTAwMDZU2Fx1MDAwMJhETSblRENcdTAwMWOuXHUwMDFjblx1MDAxN1x1MDAxNVx1MDAxOdtyXHUwMDAwXHUwMDA0W9pcdTAwMTCHOFx1MDAwNDRcdTAwMTVWglx1MDAwMcXc9iBcdTAwMGWOJ1D8jbbam0qCqnFpR1x1MDAxY+lcdTAwMTDDpMY5gMKvTF4sOuBoXHUwMDAyXHUwMDE4YtsgcyGXNr2gXG6JXHUwMDE3eYBcdTAwMTkhkVx1MDAxMic7XHUwMDEzXHTciVwip1CtS8NcdTAwMTRfeuckc4btKGy/c4VcdTAwMGZkcr05XHUwMDBlp6ldXk+RbzjuXFw2nFHDXHUwMDA15Vx1MDAxY9lcXFx1MDAxMiBsYjDpaFx1MDAxY4RcdTAwMGKNZE6ZWXqlXHUwMDAwwmFod1gqQtXJzORwXHUwMDFjnyqz2Scq0WVjy3t9XHUwMDAw4OVcdTAwMTjB7fumXGZwOf1QXHUwMDA10OHKS81cYp52+WivTZiIxGc3/OaEzNncl6HUXHUwMDE4245SXHUwMDFhtcrkjELZRbFnXHUwMDFh0Vx1MDAwMcHhmGM0Z3hDUVx1MDAxM6JvKpc+VztcdTAwMWNjyM9cdTAwMWOtbZh6XHUwMDEyXGI/0Fx1MDAwNuVNom1cdIiYXHUwMDE1rpZcdTAwMThcdTAwMDdFztrmXG5cdTAwMWRgTSY7duPNs12yqLGVmWgxMbZUUpiDckWIpszWU4jJXHQyRyu8XFwzbGJlXHJcXLlsPCv5aF5ZhSVccqBcdTAwMDM9MZ5wiFx1MDAxZFxmXHI5XHUwMDE0XHUwMDE5jlx1MDAwNy5FmXbQi6YorSDx0Woz2XeC481FikAhQlx1MDAwMOLDXyrLOFx1MDAwMcnty5842pJUSzF1+1DikFx1MDAxOEAhpFx1MDAwNWfLb1x1MDAxZj5ClFx1MDAxMzTLXHJcdTAwMTAuuF1uNv2IXHTVguHtQ3FcdTAwMTEo9ciMS3kvhMS/XHUwMDA1/1xys+y8Wq3SaM017sAu2Vxms+5s61x0tHjWMO76XHUwMDBmP3vl61i9LP0y3CdOio3DeuZrXHUwMDFid7Z3LXJcdTAwMGV6XGJEXGI28ZaDd9h2yP6ekfNsO+2gq4ZcdTAwMGWdTUqS4KrVoMPHbDpH2r6p0qrTaePOtvVcdTAwMDHGQlqvR9O2W+hZbtiIW4iS8JZRNDQoYqNcdTAwMDD4SNZY/f3j5dBr3Pjy+DLWPfVE2lxc52DTq78/N6tcdTAwMGZRqvlcdTAwMTlW439C7nLnXfz+fG71TWjg0oS/PsT6ykavUSWbr/j5n1xycvaUTF5cdTAwMWPHjm5vjlUn+mFLLVxiumZgO4sqY99cdTAwMGIxXHRSkFx1MDAwZcXNknNh1Yz5mFx1MDAxYVx1MDAwYkOpXHUwMDA0pFx1MDAwMjBSMEZcdTAwMTHs85Iks1x1MDAwNVx1MDAwN9ZcdTAwMTlCvUr+MGbRXHUwMDEwXHUwMDFhO1xu2684uM7t5dh/6rm233RL3mdHXHUwMDEwQ0+/zcpcdTAwMDJcdTAwMTZIVc5UXHUwMDE22Hy6gTXq487z2cdcdTAwMWJ99D1cdTAwMTVLNDPfhUek2zCRh6liwrFccoBcdTAwMTm1VZdcdTAwMDLmRVx1MDAxMu2bUDT6MISR7Vx1MDAxNLNTgcamJUVByfBcXHNe8zNbWoBcdTAwMDYwemiw9XrabenWd1x1MDAxNVx1MDAxN+RYXGI0t1RaXHUwMDEwPN8mXG5cdTAwMGLCo/omtJJcdTAwMWSEjUzItVJ9XHUwMDAzaMVTx4NO4oxcdTAwMTc71Vx1MDAxNoItryNv1lJUV69G61x1MDAxY8ePS0QqMfihNOpRfUrQXHUwMDFihIlmR/M9v8rpUfa007087ulbN1U96vx4ulx1MDAxZbujeEA8062cycHRdfmGt5NcdTAwMDeJXHUwMDFjvfbTwVx1MDAwM1x1MDAwZc6eTI99Pz9IpjuxRjL22ErddD8tqr+o7Fxin5P4wm3RdjH9XUx/XHUwMDE309/F9Ifj7WL6wfF2Mf01Y/qB5S7T4Vx1MDAxMIl45Os0eU66XHUwMDA3XFybhNu+62eT5uqsS9J+7oubdrbVuFx1MDAxNTdklMhcdTAwMDf1wa7csLBYVrFcdTAwMTEl2+7dteNrXHUwMDFicVx1MDAwYlFcdTAwMTJcdTAwMWHTXHUwMDE34S+tsWaDWKvxXFzipNZcdTAwMTKQucuR+9PqXHKnblxcp44jj1x1MDAxMFx1MDAxYtO3ffZcdTAwMTWfjemjnkWFyoXRuO9cdTAwMGbH9FFHMzSHtt+rauda2E80XHUwMDAy+lSHZqW5fSOwXudcdTAwMDW9d5Wid0jPqz+8ePe5nmf3z2mTjnykXHUwMDEwzSuHKNReXHUwMDE0/ShcdTAwMTN8XHUwMDE1y1CFKWHdLK1cdTAwMTHDW1xm6OM0rVx1MDAxMW/znNZHRDKYRexsRF+iS0JcdDN/sqmUkfzjfS9Wj+enfVx1MDAxZlx1MDAxZuJesuZ3XG5/LKq/ZFx1MDAxMtuM7XNcdTAwMTlcdTAwMWHbp+hcdTAwMWajn7VGe0i3lT9cdTAwMWHIx/JcdTAwMGJcXD4/lfqN854oxVwiXHUwMDBmWFx1MDAxYtpcdTAwMTfGXGKUvzmh/WE4XHUwMDExiKJSyG2G9m1vZ2PjJZpKwJ9z1vzOebGIwVx1MDAxM5I//FpcdTAwMDODnmmA1bdcdTAwMWTZT+dC4LmlyH7wfGtF9r/91r77bqORa+M923+Lne53K95LYo50XHUwMDE0h1x1MDAxZmu5XHUwMDBmcWxcdTAwMTHjXHJDrr++/fo/VaGJeiJ9ZeroMQ PUB SUB SUB SUB Producer Consumer Kafka Azure EventHubs AMQP Producer Consumer AWS S3 Storage S3 Google Cloud Storage GS
This fictive data fabric above consists of a heterogeneous set of technologies,
interconnected by pipelines. You can also turn any pipeline into an API using
the serve
sink, effectively creating a dataflow
microservice that you can access with a HTTP client from the other side:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1Z2VLbSFx1MDAxNH3nKyjPKyi9L3mzg1x0TFx1MDAxMsJiXHUwMDA3yEyKXHUwMDEyUtvWIEtCkllC8e/TkrG1WF5cdTAwMDA7eGpcIqqwfbvVfVt9z7nntlx1MDAxZTY2N2vxfaBq7zdr6s4yXcdcdTAwMGXN29pWYr9RYeT4nm5C6e/IXHUwMDFmhFbas1x1MDAxN8dB9P7dOzNcYozsLsPy+8M7lav6yosj3fcv/Xtz8yH9n5vLdTyV9k2t2Uyc47L1wPfSWVx1MDAwNSOAU4nG7U60oyeKla1cdTAwMWI7plx1MDAxYqmsJTHVXHUwMDA2Le9cZvxcdTAwMTR++1x1MDAxONGdI/aPbym0nU3acVxc9yS+d4crMq3eIMy5XHUwMDE0xaF/pU5cdTAwMWQ77ul2WLKP77P9OHFg3Fx1MDAxY/qDbs9TUVS4yVx1MDAwZkzLie9cdTAwMTNcdTAwMWJcdTAwMDBjq+l100Eyy13Sg1x1MDAxMINcdTAwMTCKIIKUcyhotuBkXHUwMDAwLLkhucBcdTAwMDRIRCBcdTAwMTKs5NlcdTAwMDff9cPEsz9AemWuXZrWVVf759lZXHUwMDFmS9nENrM+t0/rXHUwMDE1mU895XR7sbaRzFx1MDAxNqn0oUNcdTAwMGWpnlx1MDAwMuV6J1x1MDAxM1x1MDAwNPt2uvM/skdcdTAwMWSafbWfbsqX+v3R52BcdTAwMGZ8jT5f9FutRvfs3DwtPD/Pfnp+3sB1M++ThmYurrLRXHUwMDA3gW1cdTAwMGWjXHUwMDAwMsk4Z5hcdTAwMTBcdTAwMDKyx6Zj7ao8nOtbV1x1MDAxNYFcdTAwMTPFZlx1MDAxODdcdTAwMWPPdrxu+Vx1MDAxNuXZU1pcXDOKP/j9vpPEwqHveHG5RzpuPVxm/dueMu2Kkae2XHUwMDA1yXBcdTAwMTmQkiv7tpnFTvpj/P3H1vzeZG539sz+otBcdTAwMWZcdTAwMDFcdTAwMDPkL/i86bBBKeJcdTAwMTAzLlx1MDAwNFx1MDAwMFx1MDAxNEC1XHLps1x1MDAxNpjzdyP/+bj1PE5cdTAwMTJcdTAwMDSWrSNOoowzJFx1MDAwMcxQOI+U0D78eL673zm4XHUwMDBlLtvnN1x1MDAwN0wpTNaelFx1MDAxMPrPkFx1MDAxMlx1MDAxMZqQmMSZXHUwMDBmvzlpnTlcdJVI4zeHvYbDzGTPqkhcZjNWto5IXGbp6GSMXHUwMDAysjCJtYN63Sd+s3ta/354ctz7elx1MDAxMXXgkkks8rWqXFwmh2EhXHIqXHUwMDAxkprDJEOIXHUwMDE2KIzARSlMXHUwMDAxXGYxnE1hSipLdSYpjFx1MDAxMkMgwjRcdTAwMTVcdTAwMDBBXHUwMDA1Y3KS0SZcdI0xrXuBXFxccqE9jFx1MDAwM2xcdTAwMTRD6Mny+LY8l3PsqZxcdTAwMTiurS+vd759+fo9wFx1MDAxNyfRWVx1MDAwZtw1wXazlmGm1vGtQVx1MDAxYSV6tzlcdTAwMTZcYlx1MDAwMoSRwFx1MDAwMPJcXKeuXHUwMDE5pFrbkJhojFIqkH7IZHLtv4xhk6ydbdFSKXZq1JXuXohhYnVcdTAwMTdXXHUwMDExXGbCtGxcdTAwMWRcdTAwMTFcZoZcdTAwMTJIjIBYmGBmb/K6XHUwMDEyjFx1MDAxNFx1MDAwNlx1MDAxNIBr+uBaKUlcXGRcdTAwMThMsVx1MDAwMVxi1qlcdTAwMDAzXcZCQEueLYliqIG4lEwgpuszwbNZxlx1MDAxNEMnKzmCkFx1MDAwNlxiXCJvUcmNXHUwMDAz8CFcdTAwMTeWXHUwMDBiZZpCYFx1MDAwZVPfuOVxXHUwMDE0zavgqo7vxSfOz5QuQcG6a/ZcdTAwMWT3vlx1MDAxMEMpYrSDx82T1t9e/XC/Vmiqu043XHUwMDAxUM3SXHUwMDBmRIVcdTAwMDVsxY5luuNcdTAwMGWxXHUwMDFmZK2WnszUXHUwMDE1S7g/wSx+6HRcdTAwMWTPdFvTJ05qnb1RPEAjl1xmL81IpZWQzjz4ZVqD5J5JiVxuIJSUQinh4sc4e4Houl43bFx1MDAxZLTOdi122LTuflx1MDAxZa07XHUwMDE3XHUwMDEwUSqYXig2oEr+XsZcdTAwMDR8XHUwMDExdVx1MDAwMaXOfFx1MDAwMkiRqb//tby43v10Jzq++Vx0nV5cdTAwMWbef1x1MDAxYjSvjm/2quTFNjI0wzLN9kBoamdaPEzqXHUwMDBianCu95hhSjQomJgtL6b51Du6aKCdz1x1MDAxMT6KrY9A4bO9xpeTKp/ApFx1MDAwN1x1MDAxMzO+QLbU4tBcdTAwMTmG+a8vXHUwMDBm+avESqisuOR5RlOQT1UskLNkW/Oie1x1MDAxZU3N3qQ1pSnKZtFcdTAwMTSmy6Spacc6kFWc60A0yVRcdTAwMDAwrqHEVqNRJplcbs9nqlnSZXbeKoRpWbpsVY9bKcFzM4JW0/TO/jyXjZvm8T+dxqe23b9YrVwimom+aaVcdTAwMDLMZaZcdH1cdTAwMDCgRCB/fDdcdTAwMGZ41atec+AxJFxmgChCXHUwMDFhWZwyhFx1MDAwYsAjgFx1MDAxYWTl+lx1MDAwMCNDYF0pJLUvhqiiUMjZxiDkiDKd9VYjXHUwMDE33uB49UVSvlx1MDAxZVx1MDAwNC9cdTAwMTXxfce28/moqOPnpZGytC84spCoh+JFmMWIl61jzEpcbijQNefimn62ylpTzFx1MDAxMslccoSYgJBcdTAwMDMkOMwgkGJcdTAwMTZjg1x1MDAxM631OOKC6i+85NhyQEuZoTEridBcdTAwMTlSO1x1MDAwMis0flx1MDAwNWpcdTAwMTFcIlxmQvomqF1RjlxcQTJ7XHUwMDFkJ+y1Woe/urIvzrlcZvxPe1x0XG5cdTAwMDGaqpZcdTAwMDWhXHUwMDFhXHUwMDExlC1+vvftOti5bodn8HLnY68tdm5C9qG97vjHgFx1MDAxYkBjmzFINf55ttzhO1BpXGIkiYYkQZhL/jr8v+4lqHZCXHUwMDEwXHUwMDA23uI07/c70ORaq3eg4lX9n+fNcyv0NFx1MDAwNKtcYochUraO+IYgXCKI0EBcXJhv5kT3evJcckpTPSOMXHUwMDEywVx1MDAxMNKiokg4hFx1MDAxOURqXHLAsNZcdTAwMWRcdTAwMWO+qkiIQ9OLXHUwMDAyM9QoruKcqlxunVx1MDAwMENottPETyjVXub47kl1QKiLXHUwMDFizHN5YVx1MDAxZVxyXHUwMDE1ILYszoG5XHUwMDE3Mc/gXHUwMDFjL1x0zGHXYVx1MDAwNG88IaBmXHUwMDA2wUmsp6mNTlxyajeOum1UsHgnvVx1MDAxMtWSxn9cdTAwMTJoKj1seNx4/Fx1MDAxN4m24lx0In0=REST API App HTTP
Because you have full control over the location where you run the pipeline, you
can push it all the way to the "last mile.". This helps especially when there
are compliance and data residency concerns that must be properly addressed.