一行的数据流

2021-01-19


你还记不记得“说出曲子的名字“这个节目?参与者挑战用尽可能少的提示,叫出曲子的名字。如今,类似的情况也给Vertica制造了新的挑战。我们今天就来看一看,Vertica如何处理消化数据形式为一行的数据流。
 
一个简单的数据推流方法是给网卡写CSV数据行。这是dump 1090使用的方法。但是,我们怎么去捕捉并且转换这些数据,转化成可以查询的数据?
 
这里是一个dump 1090的例子:



这些数据由TCP端口30003发布。在另一头,我们可以用”netcat”(nc)来收听TCP端口30003数据源,并且把数据传输给Vertica:



那是个很复杂的数据源,让我们把它分解一下:
 

  • Netcat连接到了TCP端口30003,把数据流写为stdout(-i 60 如果60秒没有数据就将超时)
  • 从stdin来的数据,将被分割成为2000行的数据块,通过”vsql”筛选
  • Vsql读取逗号分割的文本,并写入表”dump 1090”
 
这并不像Kafka那样拥有安全、可重复、错误处理等等的一个好的解决方案,但是也能解决问题!
 
有用的链接:
COPY LOCAL data to Vertica:
 https://www.vertica.com/docs/latest/HTML/Content/Authoring/SQLReferenceManual/Statements/COPY/COPYLOCAL.htm 
Robust streaming with Kafka: 
https://www.vertica.com/docs/latest/HTML/Content/Authoring/KafkaIntegrationGuide/HowKafkaAndVerticaWorkTogether.htm 
Blog series on Vertica and ADS-B air traffic monitoring:
https://www.vertica.com/blog/blog-post-series-using-vertica-to-track-commercial-aircraft-in-near-real-time-part-7/