我有一个供应商正在共享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存储桶进行测试时,以上代码有效-一个用于源,另一个用于输出。 谢谢