【发布时间】:2021-11-11 03:06:13
【问题描述】:
所以我有一个 s3 存储桶(数据),其中有一个名为(first)的文件夹,其中包含多个 CSV 文件,但我现在不知道该文件的名称,我想从该文件夹中读取最新的文件进入 pyspark 数据框。
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python amazon-web-services csv amazon-s3 pyspark
所以我有一个 s3 存储桶(数据),其中有一个名为(first)的文件夹,其中包含多个 CSV 文件,但我现在不知道该文件的名称,我想从该文件夹中读取最新的文件进入 pyspark 数据框。
【问题讨论】:
标签: python amazon-web-services csv amazon-s3 pyspark
要从 S3 下载 CSV,您必须一一下载:
import os
import boto3
from dotenv import load_dotenv
load_dotenv(verbose=True)
def aws_session(region_name='us-east-1'):
return boto3.session.Session(aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.getenv('AWS_ACCESS_KEY_SECRET'),
region_name=region_name)
def download_file_from_bucket(bucket_name, s3_key, dst_path):
session = aws_session()
s3_resource = session.resource('s3')
bucket = s3_resource.Bucket(bucket_name)
bucket.download_file(Key=s3_key, Filename=dst_path)
download_file_from_bucket('tci-s3-demo', 'children.csv', 'children_download.csv')
上面的代码将帮助您从任何目标路径上的 S3 存储桶下载文件。
以下代码应进行相应修改,以从 spark 中的 CSV 文件上传架构
df = spark.read.csv("/tmp/resources/zipcodes.csv")
df.printSchema()
【讨论】: