问题标签 [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.
parquet - HDFS(远程文件系统)的 Apache Arrow 连接问题
我想连接 pyarrow 以在 hdfs 中读取和写入镶木地板文件但我面临一些连接问题
我安装了 pyarrow 和 python pandas 现在我正在尝试在远程机器上连接 hdfs
错误信息
python - 有没有办法在 PySpark 中为 pandas_udf 设置最小批量大小?
我正在使用 pandas_udf 在我的 spark 集群上应用机器学习模型,并且有兴趣预定义通过箭头发送到 UDF 的最小记录数。
我遵循了大部分UDF的databricks教程...... https://docs.databricks.com/applications/deep-learning/inference/resnet-model-inference-tensorflow.html
在教程中,我将 spark 会议设置为具有最大批量大小并启用箭头。我可以轻松设置最大批量大小,但是我想知道是否有类似的方法来设置 UDF 将处理的最小批量大小?
我正在运行 spark 版本 2.4.3 和 python 3.6.0。
pyarrow - 是否有 Python 模块可以使用 pyarrow 读取 avro 文件?
我知道有 pyarrow.parquet 用于将镶木地板文件读取为箭头表,但我正在寻找 avro 的等价物?
parquet - 阿帕奇拼花和箭头之间的区别
我正在寻找一种方法来加速我的内存密集型前端 vis 应用程序。我看到有人推荐 Apache Arrow,而我正在研究它,我对 Parquet 和 Arrow 之间的区别感到困惑。
它们都是列式数据结构。最初我认为 parquet 是用于磁盘的,而箭头是用于内存格式的。但是,我刚刚了解到你也可以将箭头保存到办公桌上的文件中,比如 abc.arrow 那样的话,有什么区别呢?他们不是在做同样的事情吗?
python - pyarrow.Table 是否适合长期存储 pandas DataFrame?
试图想出一个快速的 Pandas 数据帧序列化和长期存储的解决方案。数据框内容是表格的,但由用户提供,可以是任意的,因此可以是完全文本列和完全数字/布尔列。
主要目标是:
尽快序列化数据帧,以便将其转储到磁盘上。
使用格式,我稍后可以从磁盘加载回数据帧。
好吧,序列化和紧凑输出文件的内存占用最少。
运行基准比较不同的序列化方法,包括:
- 实木复合地板:
df.to_parquet()
- 羽毛:
df.to_feather()
- JSON:
df.to_json()
- CSV:
df.to_csv()
- PyArrow:
pyarrow.default_serialization_context().serialize(df)
- PyArrow.Table:
pyarrow.default_serialization_context().serialize(pyarrow.Table.from_pandas(df))
在此期间序列化速度和内存占用可能是最大的因素(阅读:摆脱数据,尽快将其转储到磁盘)。
奇怪的是,在我们的基准测试中,序列化pyarrow.Table
似乎是最平衡且相当快的。
问题:
在理解直接使用 PyArrow 序列化数据帧和 serializing 之间的区别时,我是否遗漏了什么?
pyarrow.Table
Table 在数据帧主要由字符串组成的情况下闪耀,这在我们的案例中很常见。是
pyarrow.Table
长期存储数据帧的有效选择吗?它似乎“有效”,但大多数人只是坚持使用 Parquet 或其他东西。Parquet/Feather 在内存/存储大小方面与 pyarrow.Table 一样好,但在半文本数据帧上相当慢(慢 2-3 倍)。我可能做错了什么吗?
根据我们的基准,对于混合类型的数据帧,JSON 似乎仍然是一个选项。
如果需要,我可以提供数字。
javascript - SQL 在浏览器中的 apache 箭头之上?
我有存储在客户端浏览器内存中的数据。例如,假设数据集如下:
我想在 javascript 中对这些数据运行重要的 SQL 语句,例如:
我会得到:
我在 javascript 中的数据存储为 apache Arrow (也与Perspective一起使用),我也想对该 apache Arrow 数据执行 SQL。作为最后的手段,我认为可以在 wasm 中使用 sqllite,但我希望有一种更简单的方法可以直接查询 Arrow 数据,而无需将其全部移动到 sqllite 存储中以便对其执行查询。
有没有办法做到这一点?
windows - 箭头构建在 Windows 中失败
我正在尝试在 Windows 上离线构建 Apache Arrow。根据网站上的说明,我已经下载了所有依赖项并设置了环境变量:
我正在使用以下命令运行构建:
我的变量设置如下:
当我运行它时,我会收到以下错误,抱怨找不到 rapidjson 头文件(即使它们存在于上面的列表中):
我可以通过在我的源代码旁边手动复制 rapidjson 头文件来解决这个问题(理想情况下,我不想这样做,而是构建系统会自动拾取它)。即使在这一步之后,我也会收到以下错误:
这似乎是由于 Thrift 没有正确构建的事实:
为什么找不到所有这些文件?另外,为什么没有设置提升库的路径?在构建箭头本身时,会自动解析到 Boost 的路径。
这种情况正在发生,而其他依赖项(如 snappy 或 brotli)正在构建良好。知道为什么会这样吗?我在 Windows 中缺少一个依赖项吗?
任何帮助都非常感谢。
pyarrow - 如何使用 pyarrow.read_csv 添加/更改列名?
我目前正在尝试将一个没有任何标题的大 csv 文件(50GB+)导入到 pyarrow 表中,总体目标是将此文件导出为 Parquet 格式,并进一步在 Pandas 或 Dask DataFrame 中处理它。如何在 pyarrow 中为 csv 文件指定列名和列 dtype?
我已经考虑将标头附加到 csv 文件中。这会强制完全重写文件,这看起来像是不必要的开销。据我所知,pyarrow 提供了模式来定义特定列的 dtypes,但是文档在将 csv 文件转换为箭头表时缺少这样做的具体示例。
想象一下,这个 csv 文件只是一个简单的例子,即两列“A”和“B”。我当前的代码如下所示:
如果我打印出最终表格,它不会更改列的名称。
我现在如何更改加载的列名和 dtypes?是否还有可能例如传入包含名称及其数据类型的字典?
parquet - parquet:具有不同列的数据集文件
使用 pyarrow。我有一个由多个镶木地板文件组成的镶木地板数据集。如果文件之间的列不同,那么我会得到“ValueError:架构不同”。
有没有办法避免这种情况?这意味着我想要一个由文件组成的数据集,每个文件都包含不同的列。
我想这可以通过 pyarrow 来完成,如果数据集的特定组件文件中不存在这些列,则将缺失列的值填充为 na。
谢谢