Connectors
Connectors是Presto queries的’数据源’,即便查询数据源中没有table表,只要实现Presto所需的API,也可以查询数据。
ConnectorFactory
plugin调用getConnectorFactory()–>得到ConnectorFactory–>建立Connector实例:
ConnectorMetadata
ConnectorSplitManager
ConnectorHandleResolver
ConnectorRecordSetProvider
ConnectorMetadata
为Presto提供大量方法列举特定数据的schemas列表,tables列表, columns列表, 和其他元数据metadata,例程实现可参见: Example HTTP Connector和Cassandra connector
ConnectorSplitManger
SplitManger将table数据分块chunks,供Presto向workers分发处理。
例如:
- Hive connector 列举hive的每个partition的文件files,为每个文件建立一到多个split。
- 对于没有分区(partitioned)的数据,一个相对好的策略是整个表作为一个split(Example HTTP connector 即为该类实现)
ConnectorRecordSetProvider
给定一个split和一组columns列表,RecordSetProvider负责将数据传输到Presto的执行引擎execution engine。
它会构建一个RecordSet记录集,继而建立RecordCursor游标,供Presto行行读取各行中的列值(类似于JDBC)