apache-spark - 从 S3 存储桶读取文件到 PySpark Dataframe Boto3
问题描述
如何将 S3 存储桶中的一堆文件加载到单个 PySpark 数据帧中?我在 EMR 实例上运行。如果文件是本地文件,我可以使用 SparkContext textFile 方法。但是当文件在 S3 上时,如何使用 boto3 将多个不同类型(CSV、JSON、...)的文件加载到单个数据帧中进行处理?
解决方案
Spark 使用 Hadoop API 从 S3 本地读取,而不是 Boto3。并且textFile
用于读取 RDD,而不是 DataFrames。也不要尝试将两种不同的格式加载到单个数据帧中,因为您将无法始终如一地解析它们
我建议使用
csvDf = spark.read.csv("s3a://path/to/files/*.csv")
jsonDf = spark.read.json("s3a://path/to/files/*.json")
从那里,您可以使用 SparkSQL 过滤和连接数据帧。
推荐阅读
- css - 除非字体粗细设置为 600,否则占位符中的字体真棒图标不会显示
- java - 将字符串转移到另一个地方JAVA
- java - 如何在 URI 行中将对象作为查询参数传递?
- python - django 中的 F() 表达式一直给我 0
- r - 使用 includeHTML 时,sidebarMenu 无法正常工作
- unity3d - 着色器函数 surf 有什么作用
- java - Spring Security - @PreAuthorize 返回 404
- python - 使用 Python 提取 SQL 查询
- angular - Angular ng2-ui-auth 和 Lumen Socialite 不匹配请求 POST
- android - 在 Android 中收到来电时朗读录音文本