首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark dataframe to arrow

Spark dataframe to arrow
EN

Stack Overflow用户
提问于 2017-07-28 01:04:29
回答 4查看 5.1K关注 0票数 11

我在Python中使用Apache Arrow和Spark已经有一段时间了,通过使用Pandas作为中介,我可以很容易地在dataframes和Arrow对象之间进行转换。

然而,最近我为了与Spark进行交互而从Python转到了Scala,在Scala (Java)中使用Arrow并不像在Python中那样直观。我的基本需求是尽快将Spark dataframe (或RDD,因为它们很容易转换)转换为Arrow对象。我最初的想法是首先转换为拼花,然后从拼花转到箭头,因为我记得Arrow可以从拼花中读取。但是,如果我错了,请纠正我,在看了一段时间的Arrow Java文档后,我找不到Parquet to Arrow函数。这个函数在Java版本中是不存在的吗?有没有其他方法可以让Spark数据帧转到Arrow对象?也许将dataframe的列转换为数组,然后再转换为箭头对象?

任何帮助都将不胜感激。谢谢

编辑:找到以下将地块模式转换为箭头模式的链接。但是它似乎没有像我所需要的那样从parquet文件中返回一个箭头对象:https://github.com/apache/parquet-mr/blob/70f28810a5547219e18ffc3465f519c454fee6e5/parquet-arrow/src/main/java/org/apache/parquet/arrow/schema/SchemaConverter.java

EN

回答 4

Stack Overflow用户

发布于 2017-08-11 22:37:06

在Java中还没有可用的Parquet <-> Arrow转换器作为库。您可以在Dremio (https://github.com/dremio/dremio-oss/tree/master/sabot/kernel/src/main/java/com/dremio/exec/store/parquet)中查看基于箭头的拼花转换器以获取灵感。我相信Apache Parquet项目会欢迎您为实现此功能所做的贡献。

我们已经在C++实现中为拼图开发了一个箭头读取器/写入器:https://github.com/apache/parquet-cpp/tree/master/src/parquet/arrow。嵌套数据支持还没有完成,但在接下来的6-12个月内应该会更完整(随着贡献者的增加而更快)。

票数 5
EN

Stack Overflow用户

发布于 2020-05-31 06:31:26

现在有了答案,箭头可以用于将Spark转换为Pandas DataFrames,或者在调用Pandas UDF时使用。请参阅SQL PySpark Pandas with Arrow文档页面。

票数 3
EN

Stack Overflow用户

发布于 2021-11-28 05:11:51

Spark 3.3将拥有类似于已有的mapInPandas应用程序接口调用的mapInArrow应用程序接口调用。

这是第一个添加到Python - https://github.com/apache/spark/pull/34505中的PR

到3.3版本发布时,还会有另一个类似的Spark Scala API调用。

不确定你的用例到底是什么,但这看起来可能会有帮助。

PS。请注意,此API最初是计划为开发人员级别的,因为使用Arrow一开始可能不是非常用户友好。例如,如果你在Spark/Arrow之上开发一个库,当你可以抽象出一些箭头的细微差别时,这可能是很好的。

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

https://stackoverflow.com/questions/45356969

复制
相关文章

相似问题

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