问题标签 [pyarrow]

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 投票
2 回答
5362 浏览

python - 如何有效地将大型数据框拆分为多个拼花文件?

考虑以下数据框

我需要将此数据框写入许多镶木地板文件中。当然,以下工作:

我的问题是生成的(单个)parquet文件太大了。

我怎样才能有效地(内存方面,速度方面)将写作分割daily镶木地板文件(并保持spark风味)?这些日常文件将更容易与spark以后并行阅读。

谢谢!

0 投票
3 回答
2944 浏览

dask - 带有pyarrow内存的dask read_parquet爆炸

我正在使用 dask 来编写和阅读镶木地板。我正在使用 fastparquet 引擎写作并使用 pyarrow 引擎阅读。我的工人有 1 GB 的内存。使用 fastparquet 内存使用情况很好,但是当我切换到 pyarrow 时,它就会爆炸并导致工作人员重新启动。我在下面有一个可重现的示例,它在 1gb 内存限制的工作人员上使用 pyarrow 失败。实际上,我的数据集比这大得多。使用 pyarrow 的唯一原因是,与 fastparquet 相比,它在扫描时提高了我的速度(大约 7x-8x)

黄昏:0.17.1

pyarrow:0.9.0.post1

快速镶木地板:0.1.3

编辑:我的原始设置运行 spark 作业,使用 fastparquet 将数据并行写入分区。因此元数据文件是在最里面的分区而不是父目录中创建的。因此使用 glob 路径而不是父目录(fastparquet 读取父目录时要快得多,而使用 glob 路径扫描时 pyarrow 获胜)

0 投票
1 回答
3686 浏览

python - 是否有任何 Python 库支持将结构数组写入 Parquet 文件?

我想将某些列是字符串数组或结构数组(通常是键值对)的数据写入 Parquet 文件以在 AWS Athena 中使用。

在找到两个支持写入 Parquet 文件的 Python 库(Arrow 和 fastparquet)后,我一直在努力尝试实现结构数组。

编写 Parquet 文件的问题的最佳答案列出了这两个库(并提到缺少对嵌套数据的支持)。

那么有没有办法从 Python 将嵌套数据写入 Parquet 文件?


为了存储键/值,我使用Arrow尝试了以下操作。

当我运行代码时,我收到以下消息:

最近 Arrow JIRA 票证中包含相同错误消息的答案表明正在进行支持结构的工作,尽管我不清楚它是否涵盖写入或仅读取这些结构。


当我尝试使用fastparquet存储数据时(就像我有一个字符串列表时一样):

没有给出错误消息,但在 parquet-tools 中查看时,我注意到数据是 Base64 编码的 JSON。

我猜这是意料之中的,因为fastparquet 不支持嵌套对象数组

0 投票
1 回答
1568 浏览

python - Pyarrow gcsfs write_to_dataset

您如何使用 pyarrow for gcsfs 写入数据集?

我在使用 s3fs 时看到了一个类似的问题,似乎可行:Pyarrow s3fs partition by timetsamp

我试过

我明白了OSError: Unrecognized filesystem: <class 'gcsfs.core.GCSFileSystem'>

请注意,它fs_gcs.ls(test_bucket_python)有效,所以我知道我已正确连接到存储桶

0 投票
2 回答
4427 浏览

python - 在 pyspark -pandas_udf 中为每个组应用函数(没有名为 pyarrow 的模块)

我正在尝试将函数应用于 pyspark 中的每组数据集。我得到的第一个错误是

为了解决上述问题,我删除了 spark 功能(我有spark.range())。现在错误已解决,但我现在得到以下信息:

但是当我自己尝试它时,它可以工作,即。

失败的例子——取自这里

如果我尝试转换为 pandas 数据框,它不起作用,因为它没有该schema属性。

我在这里想念什么?

0 投票
1 回答
6161 浏览

pandas - RuntimeError:不支持的类型转换为箭头:VectorUDT

我想将一个大火花数据框转换为超过 1000000 行的 Pandas。我尝试使用以下代码将 spark 数据帧转换为 Pandas 数据帧:

但是,我得到了错误:

它不起作用,但如果我将箭头设置为 false,它就会起作用。但它太慢了......有什么想法吗?

0 投票
2 回答
1204 浏览

python - 在不读取文件的情况下使用 parquet 文件统计信息

据我了解,镶木地板文件具有列的最小/最大统计信息。我的问题是如何在不读取整个文件的情况下使用 python 读取这些统计信息?

如果有帮助,我也有_common_metadata文件_metadata


我的具体问题是获取此文件系统中每个证券交易所分区的最大日期(每个年份分区包含多个具有日期列的镶木地板文件):

0 投票
1 回答
3182 浏览

python - 将带有 timedeltas 的 pandas 数据帧写入镶木地板

我似乎无法通过 pyarrow 将包含 timedeltas 的 pandas 数据帧写入镶木地板文件。

pyarrow 文档指定它可以精确地timedeltas64处理numpy。ms但是,当我从 numpy 构建数据框时timedelta64[ms],该列的数据类型是timedelta64[ns].

Pyarrow 然后因此引发错误。

这是 pandas 或 pyarrow 中的错误吗?有一个简单的解决方法吗?

以下代码:

产生以下输出:timedelta64[ns]和错误:

0 投票
5 回答
33042 浏览

python - fastparquet 和 pyarrow 的比较?

经过一番搜索,我未能找到fastparquet和的彻底比较pyarrow

我找到了这篇博文(速度基本比较)。

和一个 github讨论,声称使用创建的文件fastparquet不支持 AWS-athena(顺便说一句,情况仍然如此吗?)

我何时/为什么要使用其中一个?主要优点和缺点是什么?


我的具体用例是处理数据并将dask其写入 s3,然后使用 AWS-athena 读取/分析它。

0 投票
1 回答
615 浏览

javascript - 我可以[反]序列化箭头/js实现中的数据框字典吗?

我想使用 Apache Arrow 将数据从 Django 后端发送到 Angular 前端。我想使用数据帧/表的字典作为消息中的有效负载。使用 pyarrow 在 python 微服务之间以这种方式共享数据是可能的,但我找不到使用箭头的 javascript 实现的方法。

有没有办法用箭头反序列化/序列化一个字典,其中字符串作为键,数据帧/表作为值在 JavaScript 端?