从S3 Bucket读取文件到PySpark Dataframe Boto3

时间:2018-05-28 16:27:49

标签: apache-spark amazon-s3 pyspark boto3

如何将S3存储桶中的一堆文件加载到单个PySpark数据帧中?我正在运行EMR实例。如果文件是本地的,我可以使用SparkContext textFile方法。但是当文件在S3上时,如何使用boto3将各种类型的多个文件(CSV,JSON,...)加载到单个数据帧中进行处理?

1 个答案:

答案 0 :(得分:4)

Spark本身使用Hadoop API而不是Boto3从S3读取。 textFile用于阅读RDD,not DataFrames。另外,不要尝试将两种不同的格式加载到单个数据帧中,因为您无法一致地解析它们

我建议使用

csvDf = spark.read.csv("s3a://path/to/files/*.csv")
jsonDf = spark.read.json("s3a://path/to/files/*.json")

从那里,您可以使用SparkSQL过滤和加入数据帧。

注意:JSON files need to contain single JSON objects each on their own line