- 最新
- 投票最多
- 评论最多
【以下的回答经过翻译处理】 Glue是一个数据目录,它按照数据库和表的方式组织数据。尽管底层数据存储层可以是S3,但Glue并不关心S3上对象的名称。因此,Glue是文件或S3对象的更高层抽象。从这个意义上说,客户在尝试实现其目标时使用了错误的工具。
如果目标是处理单个文件或S3对象,则可能需要编写一个简单的Python脚本来实现其目标。这可以很容易地通过使用boto3和pandas组合来完成。简而言之,首先使用boto3进行ListObjects,然后为每个对象执行转换。
下面是一个示例代码,它将CSV转换为Parquet并保留文件名。要运行此代码,他们需要拥有boto3,pandas,fsspec,pyarrow和s3fs:
import pandas as pd
def convert(src_bucket, src_key, dest_bucket, dest_prefix=None): src= 's3://' + src_bucket + '/' + src_key # extract the source filename filename = src_key[src_key.rfind("/")+1:] # form the output destination if dest_prefix is None: dest= 's3://' + dest_bucket + '/' + filename[:filename.rfind(".")] + ".parquet" else: dest= 's3://' + dest_bucket + '/' + dest_prefix + '/' + filename[:filename.rfind(".")] + ".parquet" # Perform conversion df = pd.read_csv(src) df.to_parquet(dest)
convert('bucket-in', 'prefix-in/test12345.csv', 'bucket-out', 'prefix-out')
使用这个convert()函数,只需使用boto3进行ListObjects,然后为每个对象调用convert()函数即可。
相关内容
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前