【问题标题】:How to read parquet file partitioned by date folder to dataframe from s3 using python?如何使用python将按日期文件夹分区的镶木地板文件从s3读取到数据帧?
【发布时间】:2022-01-12 19:01:37
【问题描述】:

使用 python,我应该去 cwp 文件夹并进入 date 文件夹并读取 parquet 文件。 我在 s3 中有这个文件夹结构。

示例 s3 路径:

存储桶名称 = lla.analytics.dev

路径 = bigdata/dna/fixed/cwp/dt=YYYY-MM-DD/file.parquet

s3://lla.analytics.dev/bigdata/dna/fixed/cwp/dt=2021-11-24/file.parquet
                                             dt=2021-11-25/file.parquet
                                             dt=2021-11-26/file.parquet
                                             ........................
                                             ........................
                                             dt=YYYY-MM-DD/file.parquet

我应该访问最近的日期文件夹并将文件从 s3 读入数据帧

【问题讨论】:

  • 你的熊猫版本是什么? (pd.__version__)
  • 它是版本 1.3.4 @user17242583
  • 尝试在调用fp_obj.to_pandas()之前添加这两行:import pandasprint(pandas.__version__)
  • df = fp_obj.to_pandas() 行之前添加。
  • @Corralien 你能帮我解决这个问题吗?

标签: python pandas dataframe pyarrow fastparquet


【解决方案1】:

我看到你有 pyarrow 标记。如果您想使用 pyarrow(免责声明,我使用 pyarrow),您应该可以这样做:

import pyarrow.fs as fs
import pyarrow.dataset as ds

s3, path = fs.FileSystem.from_uri("s3://lla.analytics.dev/bigdata/dna/fixed/cwp")
dataset = ds.dataset(path, partitioning='hive', filesystem=s3, format='parquet')
table = dataset.to_table()

在 pyarrow 的 filesystem docstabular dataset 文档中有更多详细信息。 pyarrow cookbook 上也有这方面的食谱。

【讨论】:

  • 我收到此错误:在存储桶“lla.analytics.dev”中获取密钥“Bigdata/DNA/fixed/cwp”的信息时:AWS 错误 [代码 15]:没有响应正文。
  • 数据集行出现一些错误..上面的代码不起作用...
  • 我最好的猜测是权限问题或区域问题。默认情况下,该代码将使用来自相同配置文件AWS CLI uses 的您的区域和密钥。您能否使用 AWS CLI 列出该存储桶中的文件?
  • "无法导入模块 'lambda_function': 没有名为 'pyarrow._dataset' 的模块",
  • 我正在尝试在 Lambda 中执行上述代码,但出现此错误
猜你喜欢
  • 1970-01-01
  • 2019-10-27
  • 2017-12-18
  • 1970-01-01
  • 2018-06-24
  • 2021-12-28
  • 1970-01-01
  • 2019-12-07
  • 2017-01-22
相关资源
最近更新 更多