问题标签 [apache-arrow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1193 浏览

hadoop - Apache Spark 和 Apache Arrow 有什么区别?

Apache Arrow 和 Apache Spark 有什么区别?Apache Arrow 会取代 Hadoop 吗?

0 投票
2 回答
4038 浏览

java - Apache Arrow Java API 文档

我正在为 Apache Arrow API 寻找有用的文档或示例。谁能指出一些有用的资源?我只能找到一些博客和 JAVA 文档(不多说)。

根据我的阅读,它是用于快速分析的标准内存列式数据库。是否可以将数据加载到箭头内存并对其进行操作?

0 投票
4 回答
5464 浏览

scala - Spark数据框到箭头

我在 Python 中使用 Apache Arrow 和 Spark 已经有一段时间了,并且通过使用 Pandas 作为中介可以轻松地在数据帧和 Arrow 对象之间进行转换。

然而,最近,我已经从 Python 迁移到 Scala 以与 Spark 交互,并且使用 Arrow 在 Scala (Java) 中不像在 Python 中那样直观。我的基本需求是尽快将 Spark 数据帧(或 RDD,因为它们很容易转换)转换为 Arrow 对象。我最初的想法是先转换为 Parquet,然后从 Parquet 转到 Arrow,因为我记得 pyarrow 可以从 Parquet 读取。但是,如果我错了,请纠正我,在查看 Arrow Java 文档一段时间后,我找不到 Parquet to Arrow 函数。Java版没有这个功能吗?是否有另一种方法可以将 Spark 数据帧获取到 Arrow 对象?也许将数据框的列转换为数组然后转换为箭头对象?

任何帮助将非常感激。谢谢

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

0 投票
1 回答
3898 浏览

pandas - 使用 Apache Arrow 将 PySpark DataFrame 转换为 Pandas

我想将PySparkDataFrame ( pyspark.sql.DataFrame)转换为 dataframe Pandas。有一个toPandas()非常低效的内置方法(请在此处阅读 Wes McKinney 在 Fenruary 2017 中关于此问题的文章以及他在此 jupyter notebook中的计算)。

与此同时,已经做了一些努力来加快这种转换。一个例子,这里是 Josh 的函数。但是,这对我没有帮助,因为我希望将 +1M 行从 转移pysaprk.DataFramePandas,这个解决方案对我不起作用。

幸运的是,正如 2017 年 7 月 26 日的这篇文章所示,感谢作者WesLiHolden ,由于in的实现,功能toPandas()得到了显着改进。话虽如此,我无法访问 Spark 2.3(我使用的是 Spark 2.1)。Apache ArrowSpark 2.3

所以,我的问题是如何使用Apache Arrow功能将数据帧转换pysparkPandasSpark于 2.1 的版本。我认为很多人都坚持使用旧版本,Spark并且可以从中受益。

更新 1:有人建议我先打印pysparkCSV文件,然后CSVPandas强大的read_csv方法读取文件。我真的希望我能找到一种方法来避免这样做!

更新 2:讨论中详细讨论了方法缓慢的原因toPandas()和可能的问题out of memory

0 投票
1 回答
2420 浏览

java - 如何将 CSV 文件加载到 Apache Arrow 向量中并将箭头文件保存到磁盘

我目前正在使用Apache Arrow的 java API(尽管我在 Scala 中使用它作为代码示例)来熟悉这个工具。

作为练习,我选择将 CSV 文件加载到箭头向量中,然后将它们保存到箭头文件中。第一部分似乎很容易,我这样尝试:

并定义为initVectors()writeToMutator()

(我目前不关心使用正确的类型,并将所有内容存储为字符串或VarChar箭头的燕鸥)

所以在这一点上,我有一个集合,NullableVarCharVector可以读写它们。在这一点上一切都很好。但是,现在,对于下一步,我想知道如何将它们实际包装在一起并将它们序列化为箭头文件。我偶然发现了一个AbstractFieldWriter抽象类,但不清楚如何使用这些实现。

所以,问题主要是:

  • 将一堆矢量保存到箭头文件的(最好的?-似乎有多个)方法是什么。
  • 还有其他将 CSV 列加载到箭头向量的方法吗?

编辑添加:数据描述页面提供了关于该主题的良好总体概述。

api 的测试类似乎包含一些可以提供帮助的东西,一旦我尝试过,我会发布一个带有示例的回复。

0 投票
0 回答
506 浏览

java - 如何将一个简单的、未包装的字节数组写入 Apache-Arrow ListWriter

我目前正在编写一些代码来将任意数据结构转换为 Apache 箭头向量,但遇到了一些相对简单的问题,即如何将 abyte[]写入ListVector.

ListVector当通过 a向 a 写入数据时BaseWriter.ListWriter,可以很容易地添加原始类型 - 即,writer.integer().writeInt(i)writer.float4().writeFloat4(f)

但是,对于像字节(或字符串)这样的可变长度类型,只剩下带有类似于以下签名的方法:

作为VarBinaryHolder一个ArrowBuf甚至没有构造函数的简单生成的包装类。

我期待的东西类似于VarBinaryVector提供的东西,它有Mutator一种setSafe(int index, byte[] bytes)方法可以完全满足预期。

此外,似乎没有直接的方法将字节数组包装到 中ArrowBuf,我看到的唯一方法是将数据写入新的VarBinaryVector并在之后获取底层ArrowBuf

所以,我的审讯是:

  • 只是 API 缺少一个方法,还是我什至不应该使用列表向量来存储字节1的列表?
  • 我错过了另一种明显的方法吗?

1 AVarBinaryVector适用于简单的情况,但我也希望能够嵌套列表。此外,列表包含多种类型的能力也很有用。

0 投票
4 回答
22410 浏览

python - 如何将巨大的熊猫数据框保存到 hdfs?

我正在使用熊猫和火花数据框。数据帧总是非常大(> 20 GB),标准的火花函数不足以满足这些大小。目前我正在将我的熊猫数据框转换为像这样的火花数据框:

我进行这种转换是因为使用 spark 将数据帧写入 hdfs 非常容易:

但是对于大于 2 GB 的数据帧,转换失败。如果我将 spark 数据框转换为 pandas,我可以使用 pyarrow:

这是从 spark 到 pandas 的快速转换,它也适用于大于 2 GB 的数据帧。我还没有找到相反的方法。意味着有一个熊猫数据框,我在 pyarrow 的帮助下将其转换为火花。问题是我真的找不到如何将 pandas 数据帧写入 hdfs。

我的熊猫版本:0.19.0

0 投票
1 回答
2236 浏览

python - 在 Athena 中创建覆盖写入镶木地板文件的表

我正在使用以下 python 脚本从 CSV 文件创建镶木地板文件:

然后我手动将它上传到某个 s3 位置,并在 Athena 中创建一个表。用于创建表的查询:

表创建成功,但是当我尝试查询表时,它不显示内容。它只显示行的索引和列名。这是CSV镶木地板文件。镶木地板上的查询:

我在控制台上看到的结果。

谁能指出这里出了什么问题?

0 投票
1 回答
181 浏览

c++ - 从双指针构造箭头 DoubleArray

我有一个二维双数组指针。我可以将其转换为u_int8_t,将其提取到mutable_data()箭头池缓冲区,并构造一个箭头 DoubleArray。但是,当我从数组的 , 中获取值时Value()raw_values()我无法获得正确的数字。有人请查看我的代码并帮助我:

谢谢

0 投票
1 回答
1129 浏览

datetime - overflow error using datetimes with Pyarrow

While randomizing datetimes to test a database, I saved them to parquet using pyarrow.parquets' write_table(), then read them back using read_table().

Upon trying to convert to Python datatypes with to_pydict(), I recieved the following error:

I played around, and this happens for datetimes with year larger then 2700 or so (This was at work and this is a larger number, forgot the exact one that was lower).

I'm new to pyarrow, is this expected behavior?