问题标签 [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.
python - 如何有效地将大型数据框拆分为多个拼花文件?
考虑以下数据框
我需要将此数据框写入许多镶木地板文件中。当然,以下工作:
我的问题是生成的(单个)parquet
文件太大了。
我怎样才能有效地(内存方面,速度方面)将写作分割成daily
镶木地板文件(并保持spark
风味)?这些日常文件将更容易与spark
以后并行阅读。
谢谢!
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 获胜)
python - 是否有任何 Python 库支持将结构数组写入 Parquet 文件?
我想将某些列是字符串数组或结构数组(通常是键值对)的数据写入 Parquet 文件以在 AWS Athena 中使用。
在找到两个支持写入 Parquet 文件的 Python 库(Arrow 和 fastparquet)后,我一直在努力尝试实现结构数组。
编写 Parquet 文件的问题的最佳答案列出了这两个库(并提到缺少对嵌套数据的支持)。
那么有没有办法从 Python 将嵌套数据写入 Parquet 文件?
为了存储键/值,我使用Arrow尝试了以下操作。
当我运行代码时,我收到以下消息:
最近 Arrow JIRA 票证中包含相同错误消息的答案表明正在进行支持结构的工作,尽管我不清楚它是否涵盖写入或仅读取这些结构。
当我尝试使用fastparquet存储数据时(就像我有一个字符串列表时一样):
没有给出错误消息,但在 parquet-tools 中查看时,我注意到数据是 Base64 编码的 JSON。
我猜这是意料之中的,因为fastparquet 不支持嵌套对象数组。
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)
有效,所以我知道我已正确连接到存储桶
python - 在 pyspark -pandas_udf 中为每个组应用函数(没有名为 pyarrow 的模块)
我正在尝试将函数应用于 pyspark 中的每组数据集。我得到的第一个错误是
为了解决上述问题,我删除了 spark 功能(我有spark.range()
)。现在错误已解决,但我现在得到以下信息:
但是当我自己尝试它时,它可以工作,即。
失败的例子——取自这里
如果我尝试转换为 pandas 数据框,它不起作用,因为它没有该schema
属性。
我在这里想念什么?
pandas - RuntimeError:不支持的类型转换为箭头:VectorUDT
我想将一个大火花数据框转换为超过 1000000 行的 Pandas。我尝试使用以下代码将 spark 数据帧转换为 Pandas 数据帧:
但是,我得到了错误:
它不起作用,但如果我将箭头设置为 false,它就会起作用。但它太慢了......有什么想法吗?
python - 在不读取文件的情况下使用 parquet 文件统计信息
据我了解,镶木地板文件具有列的最小/最大统计信息。我的问题是如何在不读取整个文件的情况下使用 python 读取这些统计信息?
如果有帮助,我也有_common_metadata
文件_metadata
。
我的具体问题是获取此文件系统中每个证券交易所分区的最大日期(每个年份分区包含多个具有日期列的镶木地板文件):
python - 将带有 timedeltas 的 pandas 数据帧写入镶木地板
我似乎无法通过 pyarrow 将包含 timedeltas 的 pandas 数据帧写入镶木地板文件。
pyarrow 文档指定它可以精确地timedeltas64
处理numpy。ms
但是,当我从 numpy 构建数据框时timedelta64[ms]
,该列的数据类型是timedelta64[ns]
.
Pyarrow 然后因此引发错误。
这是 pandas 或 pyarrow 中的错误吗?有一个简单的解决方法吗?
以下代码:
产生以下输出:timedelta64[ns]
和错误:
javascript - 我可以[反]序列化箭头/js实现中的数据框字典吗?
我想使用 Apache Arrow 将数据从 Django 后端发送到 Angular 前端。我想使用数据帧/表的字典作为消息中的有效负载。使用 pyarrow 在 python 微服务之间以这种方式共享数据是可能的,但我找不到使用箭头的 javascript 实现的方法。
有没有办法用箭头反序列化/序列化一个字典,其中字符串作为键,数据帧/表作为值在 JavaScript 端?