- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从存储在 s3 中的 Parquet 文件将数据增量加载到 Pandas,我正在尝试使用 PyArrow 来实现此目的,但没有任何运气。
将 Parquet 文件的整个目录写入 Pandas 效果很好:
import s3fs
import pyarrow.parquet as pq
import pandas as pd
fs = s3fs.S3FileSystem(mykey,mysecret)
p_dataset = pq.ParquetDataset('s3://mys3bucket/directory', filesystem=fs)
df = p_dataset.read().to_pandas()
但是当我尝试加载单个 Parquet 文件时,出现错误:
fs = s3fs.S3FileSystem(mykey,mysecret)
p_dataset = pq.ParquetDataset('s3://mys3bucket/directory/1_0_00000000000000014012'
, filesystem=fs)
df = p_dataset.read().to_pandas()
抛出错误:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-179-3d01b32c60f7> in <module>()
15 p_dataset = pq.ParquetDataset(
16 's3://mys3bucket/directory/1_0_00000000000000014012',
---> 17 filesystem=fs)
18
19 table2.to_pandas()
C:\User\Anaconda3\lib\site-packages\pyarrow\parquet.py in __init__(self, path_or_paths, filesystem, schema, metadata, split_row_groups, validate_schema, filters, metadata_nthreads)
880
881 if validate_schema:
--> 882 self.validate_schemas()
883
884 if filters is not None:
C:\User\Anaconda3\lib\site-packages\pyarrow\parquet.py in validate_schemas(self)
893 self.schema = self.common_metadata.schema
894 else:
--> 895 self.schema = self.pieces[0].get_metadata(open_file).schema
896 elif self.schema is None:
897 self.schema = self.metadata.schema
IndexError: list index out of range
非常感谢有关此错误的任何帮助。
理想情况下,我需要将添加到 s3 的所有新数据(自上次运行此脚本以来添加)附加到 Pandas 数据帧,因此我认为将文件名列表传递给 ParquetDataset。有更好的方法来实现这一目标吗?谢谢
最佳答案
您想要使用pq.read_table
(传递文件路径或文件句柄)而不是pq.ParquetDataset
(传递目录)。 HTH
关于python - 如何使用 PyArrow 从 s3 读取定义的 Parquet 文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53132693/
有没有一种方法可以使用纯 pyarrow 表对数据进行排序并删除重复项?我的目标是根据最大更新时间戳检索每个 ID 的最新版本。 一些额外的细节:我的数据集通常至少分为两个版本: 历史 最终 历史数据
我有一个形状为 6132,7 的 pyarrow 表名称 final_table 我想向该表中添加列 list_ = ['IT'] * 6132 final_table.append_column
我有一个形状为 6132,7 的 pyarrow 表名称 final_table 我想向该表中添加列 list_ = ['IT'] * 6132 final_table.append_column
正如标题所述,我想通过使用 pyarrow 并写入多个 Parquet 文件,按大小(或行组大小)重新分区 pyarrow 表。 我查看了 pyarrow 文档,并确定了分区数据集章节,这似乎是一个方
当我尝试加载多个分区的 Parquet 文件时,由于缺少用空值填充架构的数据,某些架构被无效推断。我认为在 pyarrow.parquet.ParquetDataset 中指定架构可以解决此问题,但我
在使用 pyarrow 函数将 Spark df 转换为 pandas df 时,我收到以下警告: UserWarning: pyarrow.open_stream is deprecated, pl
创建了 pyarrow 的 egg 和 whl 文件并将其放在 s3 上,以便在 pythonshell 作业中调用它。收到此消息: 工作代码: import pyarrow raise 错误,whl
我正在通过 pyspark 在本地运行 spark 2.4.2,用于 NLP 中的 ML 项目。 Pipeline 中的部分预处理步骤涉及使用通过 pyarrow 优化的 pandas_udf 函数。
我有一个针对 Apache Arrow C++ 库构建的 C++ 库,使用 Pybind 绑定(bind)到 python。我希望能够用 C++ 编写一个函数来获取用 PyArrow 构造的表,例如:
我正在尝试在我的虚拟环境中安装 apache-beam[gcp]。 My python version is 3.7 My pip3 version is 20.0.2 什么时候尝
假设我加载了一个数据集 myds=ds.dataset('mypath', format='parquet', partitioning='hive') myds.schema # On/Off_Pe
有没有办法使用 pyarrow parquet 数据集来读取特定的列,如果可能的话过滤数据而不是将整个文件读入数据框? 最佳答案 从 pyarrow==2.0.0 开始,这至少可以通过 pyarrow
Pandas 数据框很重,所以我想避免这种情况。 但我想构造 Pyarrow Table 以便以 Parquet 格式存储数据。 我搜索并阅读文档并尝试使用 from_array() 但它不起作用。
我正在尝试 pip install Superset pip install apache-superset 并低于错误 Traceback (most recent call last):
对于较大文件的解析,我需要循环写入大量的parquet文件。但是,似乎此任务消耗的内存在每次迭代中都会增加,而我希望它保持不变(因为内存中不应附加任何内容)。这使得扩展变得棘手。 我添加了一个最小可重
我想在一个公共(public)属性上连接两个 Arrow 表。 Arrow 是否有一些 C++ API 来实现相同的目的?我确实找到了一个叫做 HashJoin 的东西,但我不确定它是否可以用来连接
我有一个 pandas 数据框: import pandas as pd df = pd.DataFrame(data={"col1": [1, 2], "col2": [3.0, 4.0], "co
我正在将一个 Python 对象保存到一个客户端的 Plasma 存储中,并想在另一个客户端中加载它。我的想法是将 ObjectID 作为 HTTP 请求的一部分传递。所以我有类似的东西: impor
我有一个 .dat 文件,我一直在用 pd.read_csv 读取它,并且总是需要使用 encoding="latin" 才能正确读取/没有错误.当我使用 pyarrow.csv.read_csv 时
我正在使用 Pyarrow 库来优化 Pandas DataFrame 的存储。我需要尽可能快地逐行处理 pyarrow Table 而不将其转换为 Pandas DataFrame(它不适合内存)。
我是一名优秀的程序员,十分优秀!