首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Presto中的RowType支持

Presto中的RowType支持
EN

Stack Overflow用户
提问于 2019-12-24 23:19:07
回答 1查看 110关注 0票数 0

对于那些知道Presto API for plugins的人来说是个问题。

我实现了BigQuery插件。BigQuery支持struct类型,在Presto中可以表示为RowType类。

RowTypeRowType::createBlockBuilder中创建RowBlockBuilder,它具有RowBlockBuilder::appendStructure方法,该方法只需要接受AbstractSingleRowBlock类的实例。

这意味着在我的Presto的RecordCursor BigQueryRecordCursor::getObject方法的实现中,我必须返回类型为RowType的字段的AbstractSingleRowBlock

但是AbstractSingleRowBlock有包的私有抽象方法,这阻止了我实现这个类。唯一的子SingleRowBlock具有包私有构造函数,并且没有工厂或构建器可以为我构建实例。

如何在BigQueryRecordCursor::getObject中实现对struct的支持?(提醒:BigQueryRecordCursorRecordCursor的子代)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-25 01:32:10

您需要通过调用beginBlockEntry来组装行的块,通过Type.writeXXX将每列的值附加到列的类型,然后是closeEntry。下面是一些伪代码。

代码语言:javascript
复制
BlockBuilder builder = type.createBlockBuilder(..);

builder = builder.beginBlockEntry();
for each column {
    ...

    columnType.writeXXX(builder, ...);
}
builder.closeEntry();

return (Block) type.getObject(builder, 0);

但是,我建议您使用列式API(即ConnectorPageSource和friends)。看看Elasticsearch连接器是如何实现它的:

https://github.com/prestosql/presto/blob/master/presto-elasticsearch/src/main/java/io/prestosql/elasticsearch/ElasticsearchPageSourceProvider.java https://github.com/prestosql/presto/blob/master/presto-elasticsearch/src/main/java/io/prestosql/elasticsearch/ElasticsearchPageSource.java

下面是它如何处理Row类型:

https://github.com/prestosql/presto/blob/master/presto-elasticsearch/src/main/java/io/prestosql/elasticsearch/decoders/RowDecoder.java

另外,我建议你加入Presto Community Slack上的#dev频道,所有的Presto开发人员都在那里闲逛。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59470737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档