Connectors A connector specifies how to exchange raw bytes with an underlying resource,
such as a file, a network socket, or a third-party library. A connector provides
a loader and/or saver :
Loader : translates raw bytes into structured event dataSaver : translates structured events into raw bytesLoaders and savers interact with their corresponding dual from a
format :
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nN1cXGtTo0pcdTAwMTP+7q+wPF/X7Nwv+y1cdTAwMWFcdTAwMTNdddXVvZi3Tm1hIFx1MDAwNkMgXHUwMDAy0cSt/e9nSHZcdTAwMDMhQIhcdTAwMDE2vrEql2Ggh5l++unuafy5s7u750+Gxt6H3T1j3NEsU3e15713QfuT4XqmY6tDaPrbc0ZuZ9qz5/tD78P799pwWFx1MDAwYs+qdZzB7EzDMlx1MDAwNobte6rv/9Tv3d2f0/eILNfo+Jp9b1x1MDAxOdNcdTAwMTOmh0JxXGbQeOsnx56Khlx1MDAxMlx0qF5UzHuYXkPJ81xyXVx1MDAxZO5qlmeER4KmvfpcdTAwMDVcdTAwMTPPXHUwMDE2vZFgQFx1MDAxYs3n3qR9MFx1MDAxMaHYrmlZ1/7Emt2Y1umN3MigPN91+sY3U/d7gfRY+/w8XfN6alx1MDAwMPPDrjO679mG5y2c5FxmtY7pT4I2XHUwMDAw5q2zafiwXHUwMDFitoyDKZcsbJieQlx1MDAwNYiJP3Qsx1xyxP9cdTAwMDOmr1D+ndbp36tB2Pq8j+9qtjfUXFy1LmG/5983hkh47Z5h3vf8oDEySM+Yzi9cdTAwMDJcZjNcdTAwMDQpXHUwMDBmbypcdTAwMTAzPNGna/1vdFx1MDAwMmz991x1MDAwNNgjy1xuR1x1MDAxNlx1MDAxYziK60dUR1x1MDAxNvTEN8bhcCOLXG7lXHJcdTAwMWGdNsZkjJ7Yfv3E+1pviL15v1/vki87O7mD0eOXXHUwMDA3aU+GQ61cdOvWXHUwMDBiNayjRSl/5Guu6zznvW7z8OVB+zRo0Vx1MDAxZncuXHUwMDFjwIZ2MVx1MDAxZfF81/39LZzA0VDXZjpcclx1MDAxOedcdTAwMTRcdTAwMTHBIJOh1lum3Y/PreV0+iFcZnZcIlx1MDAwM17C38K8RqCHXHRLg1x1MDAxZVx1MDAwMlRcbsFhpMcq6CWvUrHQ81x1MDAxY2V9ikRcdTAwMWVcdTAwMDZA1uhcIvZcdTAwMThDpWFcdTAwMGZcdTAwMTK4jD3MlqFHuCBcdTAwMTCx4qBXpLaFi+rY/rX5MtVcdTAwMTix0NrUXHUwMDA2pjVZWJepXHUwMDFhqlx0ulx1MDAxOFx1MDAxYa7mO663t3Cobpn39lx1MDAxNLFqyIa7oLC+qXhn3mFg6nqUTDpKnmbahnuSh1x1MDAwM1x1MDAxY9e8N23NuklcdTAwMWaOmlx1MDAwMeP4z+rAXHUwMDFhXHUwMDEyylx1MDAwNpL5u4isvmdcdTAwMDR9g9unmVx1MDAxMMykQMpxXHUwMDFhXHUwMDBluVx1MDAwMFRcYirzM6Djf2q377l/cmWMR51cdTAwMDOgM9r9vO0wRFxmbSFcdTAwMDHCXHUwMDAwhJQwJksmwNnKXHUwMDFkt1x1MDAwZVxcfHF8c97S+23x2cWXXHUwMDFmjdtcIpiqf1x1MDAwNVx1MDAxZlx1MDAxYl1x1Fx1MDAwNaDtkf3xyyV42ui6q1xiXHUwMDFiN/b3X07Yvbg4emg1XHUwMDA3Z7e3375661x1MDAxMiBcdTAwMDekdFx1MDAwMkz3PUlgfVx1MDAxMVx1MDAwNblxl3zPW487XHTjuKOl4S5ixTK4XHUwMDBmYiA4ZpLhwlBXpKJtxn1Nx1x1MDAxZGj+a4nPd4aprLfC7sdZLz6QiimPXHUwMDExnlx1MDAxYfWpJZFQyVxmvbBV2NN4g4JPj9YhXHUwMDFjn3tcdTAwMGbg9qx5e9XceuwhsVx1MDAwNufRLtY7pFx1MDAwMs6jUDGegka4Pn8n6Ds4/2zRXHUwMDE3pUHUu/R/ON+w/7U72UZcdTAwMGXhWZqMMGUof1xmlXzT267IXHUwMDE447hcIqeTyKaKXGYxWVbkXHUwMDA0XHUwMDE2UbFcdTAwMTNUb5xcdTAwMTamx9vDXCKHjm0r6+q4ZVx1MDAxMMlcbmNcdTAwMWEnkoSxXHUwMDE0zyXpXHUwMDE5XGZcdTAwMTFvnYOPKlx1MDAwZlx1MDAwMnC5RvKQfX/5co71Njxl93Wr2/72NLq72Xr0UVx1MDAxMnPhlM7XXHUwMDAw4EhcYlx1MDAwZVg0sC/an6NhXFxcdTAwMTRSSlx1MDAwNPl/oijCJCHkXHJcdTAwMDFcdTAwMTEstGZcdTAwMDDxYOJcdTAwMWJpaVxmy+j6r4PgwnDjeIuJjGONRlZzji4oMtE1i/pcdTAwMTLgXHUwMDA1hUhPzlOktItxnD9Eylx1MDAwZXDXwlc8Q1dcIr6IiOOLypqcvzgoMVvIXHUwMDEzXCImVFx1MDAwM4ThwLZcdCkkUEtk7MOIvZmhTlwiXHUwMDE1REEki0tdlII6z9dcXP/AtHXTvldcdTAwMDdDXHUwMDBm8c+20oyTrJPmjZxcdTAwMTDPa5tcdTAwMTdcdTAwMTfd+idcdTAwMTNccs2o16hw2lx1MDAxOXnRtVx1MDAwYm5YXHUwMDFiXHUwMDA2Q/zdMM9l7Fx1MDAxOba+WmLj++X+wal/dvjoW+b38fnJXHUwMDBinrRfK9HSPP/QXHUwMDE5XGZMX03bpWPafnx6pvNQXHUwMDBmcNgztCVcdTAwMWKgRlx1MDAxYz2mlMaMRVbD4KKL3nb4bTc6SPVj/v3fd4m9I2pcdTAwMTe8klx1MDAxNS68yE70c31cdTAwMWIjI5pcdTAwMTO3Mcp7Jlx1MDAxNOI1QsHsZNebsTFcdTAwMWOVl/5MtCpJu39cXE08QFVYXHUwMDEwqowqiKRZi7cg11+ewLVvjdrP7Vx1MDAxN6v12DlcdTAwMTlejq5KtSDg8uhL3+1B7vQ+61x1MDAxYfdcdTAwMWYvnC6t0IIkWImYXHUwMDFkWTi/TFx1MDAwYlx1MDAxMumfy1hkpo5cdTAwMTCW8dbQJ8GcYslkfp8k285vq8/P4vVcdTAwMDKMbGQv/ulcdTAwMTg60bVcdTAwMDRbwVx1MDAxMtJGZMlYiMBcdTAwMTFcbqa+MFsx15i1kkbO59uzu0lP71iN7nBsXHUwMDE5bqf90c27T1LW/stcdTAwMDZcdTAwMTVcYn/QUqDrlVx0vLQ4XHUwMDFioVSOJsrPVH5cdTAwMDHLn+RKXqRth5yKpeOQ47Xy9kpYkue/XHUwMDFjW2Nl65hkvLhsbSZJXHUwMDEzhjauXHUwMDEzyFx1MDAxZFxcX2quZ7w6xbWiSGCF3Y9H3fGxXHUwMDE0XHUwMDExdmezXFx6bVx1MDAwZaSEYFx1MDAxNXeuUVx1MDAxNJDti2wr5JZYjoO/ynJQXHUwMDEwoYIgWuDO5Oto7sienPbdg+uv7fPHMb+zL0TL6P+9coBqXG7iqqC5XGbXXHUwMDEyqjhcdTAwMTRcdTAwMDAsSW7QJa/StoNuiec4+Ps8hyCSlDNGq6hcdFA8p1x1MDAwNOE1lG1DnnPNRS4rlOhWmP4lootcdTAwMGamfKaLXHUwMDE02SxcdTAwMTWAM1x1MDAwMFxipWtUoWZnXG63XHUwMDE1dDhe/pZcdTAwMTXP5dhB3ZjpXHUwMDAw4Vi5XHUwMDE5XHUwMDA1po9fx3TPemMwPlx1MDAxZniW0uaH1sdOe2BdyVxuXHUwMDAyuu1hJJRcblx1MDAwZcYh4Vx1MDAxMKyxXHUwMDAxkzybW1x1MDAwZlx1MDAwZUaXSrQzY69NS1xmWK59TS5U2Fx1MDAwYlx1MDAwMHxDZWq5KenM0fTSXHUwMDE4aYWJjjNSfCxcdTAwMTVcdTAwMTBSajk2YVJSXHUwMDAwUf79iOy889ZCLs5HWZFXXHUwMDE1fIS5hFx1MDAxMotItepfqkrrPvR7P85H37l9xVx1MDAxZp5sjZ95XHUwMDBmXHUwMDE1RF5bw0fpXHUwMDA1N1hFT1LINUqmkydz67HBkTI6XHUwMDAwICSEgFx1MDAwMq9cdTAwMTUubUpNlNaUUyYpQYpcdTAwMTYximxcdTAwMWJmMJVEnFx1MDAxMyBKZyqBMVx1MDAwMZyqOaRr6OFmTHWtPZVGVCtsd5yoYkMptzKHs/RUXHUwMDA1Vn+cSpg/VZG9RbGtu+ZcdTAwMDLFK3PYRvnBXHUwMDE1dadcdF7hMlFBwVxiI1x1MDAxMvx/1N1cdTAwMTRaXHUwMDA1k2vXPPvhvajEXHUwMDFhyiHzrVXehEpcdTAwMTbrv1x1MDAxM/18hbmg6YWyXHUwMDAwSCZcdTAwMTheY9M8O9X7ZsxFqUU2OFeRTZBW5lx1MDAwMpGK8polXHUwMDE32Vx1MDAxNFryUqy52Fx1MDAwNzWSQ+hbq7PBXHUwMDFi1dmkefnRYu24l89cdTAwMDAjfJ1/yUFPXHUwMDFmb1x1MDAwZntGu3PpwObQ7+P66dPjXHUwMDFi8PJDXp0904JKLKRcdTAwMGatYNYjLVx1MDAxNFx1MDAxMFxuXHUwMDE2vOsyfVx1MDAwYoFcdKnukZaT91x1MDAxN9XW0S9cYqzuiVx1MDAxNVx1MDAwMtP39TGUXHUwMDA0USFCXHUwMDEzvVxuW4/X49b3S91cdTAwMDFnWutcdTAwMDdt+ah1aJKtx5bg8VKaqp5YybfbSDiWmHBU9jZ/2eVhjFx1MDAwYqKmNbKFUHY0fvQ0veNKgVx1MDAxY5dZRNydil6R/rAnpFxcUEzWKFx1MDAxMLi5PqxfnXSOtZejfuNaOz8yjuvbn1x1MDAxYmZ4mVx1MDAxOaPo5TI2llx1MDAwMv9xXHUwMDA3zEWUXGZcdTAwMGJcdTAwMDFcdTAwMTmu7oEzXHUwMDE2Vb5SaTKoQ1NcdTAwMWXx++k2feBcdTAwMWFXXG61dOnVXHUwMDExKI1Yo7hvilx1MDAxOVx1MDAxNVxmrPG8Ndb6XHUwMDBmkFx1MDAxYft3/W/PP86PWeO2+bD9dXFSVuibwiTOXFzGXHUwMDFj5lx1MDAxNFx1MDAwNEnm6nZDq1x1MDAwM51cblxihyNf81x1MDAwM1x1MDAwNaxcdTAwMTRviYI3gNrOb19hT1x1MDAxYlx1MDAwZa/VdYNjM+DtPZnG80HCxl13+lxufI4pUFx1MDAwM0hcdTAwMTjB8vz8tfPrP6hudSUifQ==Operators Format Connector Bytes Parser Printer Loader Saver I/O Events Parsing/Printing Computation
Connectors appear as an argument to the from
and to
operators:
from <connector> [read <format>] to <connector> [write <format>]
If the format is omitted, the default depends on the connector.
Alternatively, instead of a connector, the from
and to
operators
can take a URL or a filesystem path directly:
from <url> [read <format>] from <path> [read <format>] to <url> [write <format>] to <path> [write <format>]
When given a URL, the scheme is used to determine the connector to use.
For example, if the URL scheme is http
, the http
connector is used.
The gcs
connector is an exception, as it will get used if the URL scheme is gs
.
from https://example.com/foo.json from https https://example.com/foo.json from https example.com/foo.json from gs://bucket/logs/log.json from gcs gs://bucket/logs/log.json
When given a filesystem a path, the file
connector is used implicitly.
To disambiguate between a relative filesystem path without any slashes or a file extension, and
a connector name, the path must contain at least one character that doesn't conform to the pattern [A-Za-z0-9-_]
.
If the input conforms to that pattern, it's assumed to be a connector name.
# Parsed as a filesystem path from /tmp/plugin.json # `plugin` is parsed as a connector name from plugin # `./plugin` is parsed as a filesystem path, again (contains a `.` and a `/`) from ./plugin
Tenzir ships with the following connectors: