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