问题标签 [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 投票
1 回答
1240 浏览

pandas - 使用 load_table_from_dataframe() 存储具有日期时间对象的数据帧时的架构冲突

我正在尝试将 Pandas 中DataFrame的数据加载到 BigQuery 表中。有DataFrame一个 dtype 列datetime64[ns],当我尝试使用存储 df 时load_table_from_dataframe(),我得到

google.api_core.exceptions.BadRequest:400 提供的架构与表 [表名] 不匹配。字段 compute_triggered_time 已将类型从 DATETIME 更改为 TIMESTAMP。

该表具有读取的模式

在 中DataFramecomputation_triggered_time是一datetime64[ns]列。当我从 CSV 读取原件DataFrame时,我将其从文本转换为日期时间,如下所示:

笔记:

.values.astype('datetime64[ms]')部分是必要的,因为load_table_from_dataframe()使用 PyArrow 序列化 df 并且如果数据具有纳秒精度则失败。错误类似于

[...] 从时间戳 [ns] 转换为时间戳 [ms] 会丢失数据

0 投票
1 回答
1195 浏览

python - 使用 pyarrow 和 json.dump 将 json 文件保存到 hdfs

我正在尝试使用 pyarrow 将 json 文件保存在 HDFS 中。这是我的代码的样子。

这给出了一个错误说TypeError: a bytes-like object is required, not 'str'

当我尝试使用 joblib.dump 或 pickle.dump 时,它可以工作,但不会以 json 格式保存。有没有办法使用pyarrow将json文件直接保存到hdfs。

0 投票
1 回答
839 浏览

parquet - pyarrow 有没有办法查询 parquet 数据集分区的值?

例如,我有一个如下所示的数据集:

并将其加载为dataset = pyarrow.parquet.ParquetDataset('./dataset') 如何在a不将整个数据集读入内存的情况下查询分区“”的可用条目?谢谢~

0 投票
0 回答
213 浏览

arrays - 是否有 pyarrow 数组生成器

我正在寻找一个 python 箭头数组生成器。

我的用例如下:我有“行”记录,我想将其转换为箭头“列”表。对于我记录中的每个字段,我想创建一个相关类型的箭头数组。但我不想使用 python 数组作为中间表示,因为我担心它可能会浪费。

这是我的用例的说明:

0 投票
3 回答
4022 浏览

apache-spark - 如何本机读取羽毛/箭头文件?

我有羽毛格式文件sales.feather,用于在python和 R之间交换数据。

在 RI 中使用以下命令:

在python中,我使用了:

将数据从该文件加载到内存到运行的 Spark 实例的最佳方法是什么pyspark?我还想控制pyspark.StorageLevel从羽毛中读取的数据。

我不想使用 pandas 来加载数据,因为它会为我的 19GB 羽毛文件产生段错误,该文件是从 45GB csv 创建的。

0 投票
0 回答
1588 浏览

python - Pyspark pyarrow pandas_udf - GROUPED_MAP 返回数据帧,IntegerType 和 TimestampType 为 None NaN

最好的

目前我正在尝试使用 pyspark pandas_udf,但不幸的是,当我返回包含以下内容的 DataFrame 时遇到了一些问题:NA、None 或 NaNs。如果我使用的是 FloatType,那么结果是好的,但是一旦我使用 IntegerType、TimestampType 等......我收到一个错误并且它不再工作了。

以下是一些有效和无效的示例:

What does work?
示例 1)

结果:

例 2)

如果我们将 Age_lag 的类型更改为IntegerType ()并用 -1 填充 Na,那么我们仍然有一个有效的结果(没有 NaN)

结果:



什么不起作用?

例 3)

如果我们省略 .fillna(-1)那么我们会收到下一个错误

结果:pyarrow.lib.ArrowInvalid:浮点值被截断



例 4)

最后但并非最不重要的一点是,如果我们只是将一个静态数据帧发回 age_lag 包含None,那么它也不起作用。

问题

  • 你如何处理这个问题?
  • 这是一个糟糕的设计吗?
    • (因为我可以想象 1000 个我确实想返回 NaN 和 None 的情况)
  • 我们真的必须填写所有缺失值吗?然后再把它们换回来?还是使用浮点数而不是整数?ETC?
  • 这会在不久的将来得到解决吗?(因为 pandas_udf 很新)
0 投票
2 回答
1386 浏览

python - 从 pandas DataFrame 加载 pyarrow parquet 时保留索引

我需要将带有字典值的字典转换为镶木地板,我的数据如下所示:

{"KEY":{"2018-12-06":250.0,"2018-12-07":234.0}}

我正在转换为 pandas 数据框,然后写入 pyarrow 表:

我最终得到的数据只有日期和值,但没有字典的键:

我需要的是也有数据的关键:

0 投票
1 回答
329 浏览

c++ - 如何在 C++ 中的镶木地板文件中保存时间戳并在 Python Pandas 中加载它?

Apache Arrow在 C++ 中使用将时间序列集合保存为 parquet 文件,并使用 python 将 parquet 文件加载为Pandas Dataframe. 该过程适用于除Date64Type. 我在 C++ 中保存纪元时间,当在熊猫中加载它时,时间信息会丢失。

例如对于 boost posix time : 2018-04-01T20:11:17.112Z,纪元时间 (in int64_t) 是1522613477112000,但是当我将 parquet 文件保存为 ( Date64Type) 并加载到 pandas 时,结果是2018-04-01并且时间信息丢失了。在镶木地板文件中保存时间戳的正确方法是什么?

0 投票
1 回答
2158 浏览

python - Pyarrow.lib.Schema 与 pyarrow.parquet.Schema

当我尝试跨多个分区的镶木地板文件加载时,由于缺少用空值填充架构的数据,某些架构被无效推断。我认为在 pyarrow.parquet.ParquetDataset 中指定模式可以解决此问题,但我不知道如何构建正确的 pyarrow.parquet.Schema 类型的模式。一些示例代码:

和错误:

但是我在文档( https://arrow.apache.org/docs/python/generated/pyarrow.parquet.ParquetDataset.html )中找不到任何关于如何构建 pyarrow.parquet.Schema 模式的文档并且有只做了一个 pyarrow.lib.Schema ,它给出了上述错误。

0 投票
1 回答
969 浏览

pandas - Is there a way to force spark workers to use a distributed numpy version instead of the one installed on them?

The situation is as follows: working on a enterprise cluster with spark 2.3, I want to run pandas_udf which requires pyarrow which requires numpy 0.14 (AFAIK). Been able to distribute pyarrow (I think, no way of verifying this 100%):

The zip is the result of pip install to dir and zipping it.

But pyarrow does not play along with the nodes numpy 0.13, I guess I could try and distribute a full env to all nodes, but my question is, is there a way to avoid this and make the node use a diffrent numpy (which is already distributed in the pyarrow zip)

Thanks