从S3存储桶读取文件到PySpark Dataframe Boto3

Pau*_*vis 1 amazon-s3 apache-spark boto3 pyspark

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

cri*_*007 5

Spark本机使用Hadoop API(而非Boto3)从S3读取。并且textFile用于读取RDD,而不是DataFrames。另外,请勿尝试将两种不同的格式加载到单个数据帧中,因为您将无法始终解析它们

我建议使用

csvDf = spark.read.csv("s3a://path/to/files/*.csv")
jsonDf = spark.read.json("s3a://path/to/files/*.json")
Run Code Online (Sandbox Code Playgroud)

从那里,您可以使用SparkSQL过滤和合并数据框。

注意:JSON文件需要在单个行中包含单个JSON对象

  • 我收到了一个 No FileSystem for scheme: s3 错误。而且我也尝试过 s3n 和 s3a 也有类似的错误。 (2认同)