【发布时间】:2018-11-07 06:49:11
【问题描述】:
如何将 S3 存储桶中的一堆文件加载到单个 PySpark 数据帧中?我在 EMR 实例上运行。如果文件是本地文件,我可以使用 SparkContext textFile 方法。但是当文件在 S3 上时,如何使用 boto3 将多个不同类型(CSV、JSON、...)的文件加载到单个数据帧中进行处理?
【问题讨论】:
标签: apache-spark amazon-s3 pyspark boto3
如何将 S3 存储桶中的一堆文件加载到单个 PySpark 数据帧中?我在 EMR 实例上运行。如果文件是本地文件,我可以使用 SparkContext textFile 方法。但是当文件在 S3 上时,如何使用 boto3 将多个不同类型(CSV、JSON、...)的文件加载到单个数据帧中进行处理?
【问题讨论】:
标签: apache-spark amazon-s3 pyspark boto3
Spark 使用 Hadoop API 从 S3 本地读取,而不是 Boto3。 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
【讨论】: