Presto(Trino)数据匹配
这个过程涉及到一个非常重要的类ExampleRecordCursor。
我们先看【lines】变量,这是读取的字节流解析成的字符串迭代,下图是一个数据源文件,lines的数据组织其实就与下图所示,lines的每一行也对应下面数据文件的每一行;
【LINE_SPLITTER】变量,这个故名思义就是来进行数据分割的分隔符,因为源数据就是通过逗号进行分隔的,因此如果要想得到每一个field就需要将每一行数据按照逗号进行分隔。下图是运行时的一个状态,我们可以看到lines中的一行数据经过分割之后存入了【fields】变量中。
到这里其实就可以与列信息相对应了,例如想取列,假设列名为name,那么该列的相对列信息的偏移量为0,那我们相应的去fields中找到偏移量同为0的数据,即可得到name列的数据,这样其实就实现了列信息与数据的匹配。
到这里,我们其实已经把Presto(Trino)提供的HttpConnector示例进行了大致的分析。接下来我们将会进行核心的一些Connector的分析以及Presto(Trino)的内部运行机制的分享,而且在后面的分析中你会发现,像JdbcConnector(Mysql、Postgresql等数据库)这种复杂的连接器,其实遵循的原理与我们前面讲的这个Http Connector非常类似,只是相应的代码更多了一点,细节更复杂了一点。所以先把这个示例琢磨个差不多,准备开始下一个学习阶段吧~
原文链接:https://zhuanlan.zhihu.com/p/349878978
相关文章