当前位置: 首页 > 知识库问答 >
问题:

Presto中的RowType支持

蓟和煦
2023-03-14

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

RowTypeRowType::CreateBlockBuilder中创建RowBlockBuilder,它具有RowBlockBuilder::AppendStructure方法,该方法只要求接受AbstractSingleRowBlock类的实例。

这意味着在我实现Presto的RecordCursorBigQueryRecordCursor::GetObject方法时,我必须为具有RowType类型的字段返回AbstractSingleRowBlock

但是AbstractSingleRowBlock有package private abstract方法,这使我无法实现该类。唯一的子级singlerowblock具有package private constructor,并且没有可以为我构建实例的工厂或构建器。

如何在BigQueryRecordCursor::GetObject中实现Struct支持?(提醒:BigQueryRecordCursorRecordCursor的子级)。

共有1个答案

毛正浩
2023-03-14

您需要通过调用beginblockentry来组装该行的块,通过type.writexxx将每列的值附加到列的类型,然后使用closeentry。这里有一些伪代码。

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/elasticsearch/src/main/java/io/prestoSQL/elasticsearch/elasticsearchsourceprovider.java https://github.com/presto/blob/master/presto-elasticsearch/src/main/java/prestoSQL/elasticsearch/elasticsearchsource.java

以下是它处理行类型的方式:

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

此外,我建议您加入Presto社区Slack上的#dev频道,所有Presto开发人员都在这里活动。

 类似资料:
  • 问题内容: 我想知道AWS Athena中是否支持OFFSET。对于mysql,以下查询正在运行,但在雅典娜中却给了我错误。任何示例都将有所帮助。 从雇员中选择* empSal> 3000 LIMIT 300 OFFSET 20 问题答案: 雅典娜基本上是由Presto管理的。从Presto311开始,您可以使用语法或等效的ANSI SQL :。 您可以在超越极限中阅读更多内容,Presto满足O

  • 谁能解释一下我如何用presto编写这个查询?我发现另一篇文章似乎暗示它的工作正确,所以我有点困惑。

  • 是否有任何选项可以在Presto cli上提供参数。

  • Presto是一个由Opera Software开发的浏览器排版引擎(非开源),供Opera 7.0~10.00版使用。 Presto取代了旧版Opera 4至6版本使用的Elektra排版引擎,包括加入动态功能,例如网页或其部分可随着DOM及Script语法的事件而重新排版。 Presto在推出后不断有更新版本推出,使不少错误得以修正,以及阅读Javascript效能得以最佳化。

  • Presto Ethereum Connector Unleash the Power of Presto Interactive SQL Querying on Ethereum Blockchain Introduction Presto is a powerful interactive querying engine that enables running SQL queries on

  • 我们注意到在我们的presto集群(安装在Linux机器上的presto)中有以下奇怪的行为 我们有9台presto workers机器, 从presto仪表板中,我们可以看到,有时有活动的工作者,有时所有presto工作者- 从presto workers的日志中我看不出有什么不寻常的地方 我不确定我们是否需要搜索任何网络问题或其他问题? 注意:当我重新启动所有的presto workers时,