您的当前位置:首页Facebook Presto Connector 开发 [2]

Facebook Presto Connector 开发 [2]

2024-12-12 来源:哗拓教育

0. 计算相关序列化

1. ConnectorTableHandle, ColumnHandleConnectorTableMetadata , ColumnMetadata 有什么区别?

  • XXXMetadata 是用来表示table的元数据的, 包括 column_name 和 type, 信息是catalog 不相关的
  • XXXHandle 是用来表示特定的catalog的table/column的信息, 包含column name 和数据类型. 简单来说, XXXHandle 就是XXXMetadata + connectorId. 最必需的信息是connectorId. 虽然XXXHandle 默认是一个Marker Interface(就是没有任何一个方法), 但该数据是会被序列化后传输到worker节点的, 因此connectorId 这个属性是绕不过的. 参见下面connectorId 是干嘛呢

2. connectorId 是干嘛的

presto中数据的组织方式是三层: catalog-->schema --> table. 一个catalog 只能是一种connector, 通过配置文件中connector.name 指定, 例如hive的一个catalog的配置:

connector.name=hive-cdh5
hive.metastore.uri=thrift://localhost:10000
hive.config.resources=/home/ec2-user/presto/etc/core-site.xml,/home/ec2-user/presto/etc/hdfs-site.xml
hive.s3.pin-client-to-current-region=true

而catalog 的名称就是配置文件的名称(去除后缀). 在Connector中, connectorId就是这个对应的catalog的名称. XXXHandle 中connectorId的作用就是worker节点中根据这个 ID 查找对应的配置从而执行计算

3. ConnectorSplit

很简单, 就是coordinator 计算split后要将各个任务序列化后传输给各个worker节点计算. 因此实现的时候仅仅把分块计算所需的任何数据都扔到这个实现类里面, 搞成可序列化即可.

4. Guice 不了解怎么办?

5. Presto如何初始化connector?

总结

-- EOF --

显示全文