使用pyarrow从s3读取csv文件

我想使用pyarrow读取位于s3存储桶中的csv文件,并将其转换为镶木地板到另一个存储桶。 我在从s3读取csv文件时遇到问题。我尝试阅读下面的代码,但失败了.pyarrow支持从s3读取csv吗?

from pyarrow import csv

s3_input_csv_path='s3://bucket1/0001.csv'
table=csv.read_csv(s3_input_csv_path)

这引发错误 “ errorMessage”:“无法打开本地文件's3://bucket1/0001.csv',错误:没有这样的文件或目录”,

我知道我们可以使用boto3读取csv文件,然后可以使用pandas将其转换为数据帧,最后使用pyarrow转换为镶木地板。但是,在这种方法中,还需要将熊猫添加到包装中,以使与pyarrow一起使用时,包装大小不能超过lambda的250 mb限制。

dengluxinqing 回答:使用pyarrow从s3读取csv文件

尝试将文件句柄传递到.applicationSupportDirectory而不是S3文件路径。

请注意,pyarrow.csv.read_csv的未来版本将具有内置的S3支持,但我不确定时间表(而且我在此处提供的任何答案都会因StackOverflow的性质而迅速过时)。

,
import pyarrow.parquet as pq

from s3fs import S3FileSystem

s3 = S3FileSystem() # or s3fs.S3FileSystem(key=ACCESS_KEY_ID,secret=SECRET_ACCESS_KEY)

s3_input_csv_path = f"s3://bucket1/0001.csv"

dataset = pq.ParquetDataset(s3_input_csv_path,filesystem=s3)

table = dataset.read_pandas().to_pandas()

print(table)

s3_output_csv_path = f"s3://bucket2/0001.csv"

#Wring table to another bucket

pq.write_to_dataset(table=table,root_path=s3_output_csv_path,filesystem=s3) 
,

AWS有一个项目(AWS Data Wrangler),可帮助实现Pandas / PyArrow及其服务之间的集成。

读取的CSV示例:

import awswrangler as wr

df = wr.s3.read_csv(path="s3://...")

Reference

本文链接:https://www.f2er.com/2866271.html

大家都在问