下载并转换Parquet文件

时间:2019-12-17 17:34:43

标签: amazon-s3 pyspark boto3

我有一个供应商正在共享1000个拼花文件,我必须下载这些拼花文件并将其转换为CSV,以便老板进行分析。但是供应商未在AWS S3存储桶上授予ListObjects权限。我有什么选择来获取这1000个文件?我希望将它们放入S3存储桶中,以便可以使用spark将它们转换为CSV,然后老板可以稍后下载CSV。我试图将pyspark与boto3结合使用。下面是我在带有Spark的独立EC2实例上运行的代码片段。

print("starting...")                                                                                                                                                                                     
for s3_file in vendorbucket.objects.filter(Prefix=PREFIX):                                                                                                                                                        
    if 'parquet' in s3_file.key:                                                                                                                                                                                     
        basename, ext = os.path.splitext(os.path.split(s3_file.key)[1])                                                                                                                                          
        print ('processing s3 object= ',s3_file.key)                                                                                                                                                             
        df = spark.read.parquet("s3a://{bucket}/{file}".format(bucket=BUCKET_NAME,file=s3_file.key))                                                                                                             
        df.write.csv("s3a://{bucket}/{file}".format(bucket=OUTPUT_BUCKET_NAME,file=(basename+".csv"))) 

当我用我的帐户中的2个S3存储桶进行测试时,以上代码有效-一个用于源,另一个用于输出。 谢谢

0 个答案:

没有答案