Apache Arrow 使用 C++ 在镶木地板中编写嵌套类型

Posted

技术标签:

【中文标题】Apache Arrow 使用 C++ 在镶木地板中编写嵌套类型【英文标题】:Apache Arrow writing nested types in parquet with C++ 【发布时间】:2021-04-24 09:40:57 【问题描述】:

不幸的是,我没有找到将嵌套类型(如使用 Apache Arrow 的地图)写入镶木地板的 c++ 示例。架构的创建很清楚,但箭头表的创建部分没有。

有没有关于示例的提示或链接?

非常感谢!

【问题讨论】:

您好,欢迎来到 ***,尝试添加您正在尝试做的代码示例。 【参考方案1】:

要创建StructArray,您可以使用StructArray::Make 方法,该方法为每个字段接收一个数组向量:

arrow::DoubleBuilder heightBuilder;
heightBuilder.Append(68.3);
heightBuilder.Append(72.1);
ARROW_ASSIGN_OR_RAISE(auto heights, heightBuilder.Finish());

arrow::StringBuilder nameBuilder;
nameBuilder.Append("Alice");
nameBuilder.Append("Bob");
ARROW_ASSIGN_OR_RAISE(auto names, nameBuilder.Finish());

arrow::FieldVector fieldsarrow::field("height", arrow::float64()),
                          arrow::field("name", arrow::utf8());

ARROW_ASSIGN_OR_RAISE(auto array,
                      arrow::StructArray::Make(heights, names, fields));
std::cout << array->ToString();

【讨论】:

以上是关于Apache Arrow 使用 C++ 在镶木地板中编写嵌套类型的主要内容,如果未能解决你的问题,请参考以下文章

如何在镶木地板文件中使用 K-means

Spark - 如果已经存在,则更新记录(在镶木地板文件中)

使用 pyspark 比较镶木地板文件的元数据

如何将镶木地板格式的特定列加载到 Redshift 光谱中?

使用 to_parquet() 将 dask 数据帧写入镶木地板结果“RuntimeError:文件元数据仅在写入器关闭后可用”

AWS Redshift:如何存储大小大于 100K 的文本字段