将文件从 S3 加载到 pyspark 中的 EMR 集群的节点

Load file from S3 to nodes of an EMR cluster in pyspark

我在 S3 存储桶中有一个数据框,分为 8 个 csv 文件,每个文件大小为 709.7MB。

我创建了一个具有 8 个节点的 EMR 集群(r3.4xlarge:16 个 vCPU、122 个 RAM 和 320 个磁盘)。

我的 Spark 配置是:

num-executors='23'
executor-memory='34G'
executor-cores='5'

我写了这个 python 脚本来加载我的数据框:

df = sqlContext.read.load("s3://my-bucket/my-dataframe/*", 
                              format='com.databricks.spark.csv', 
                              header='true',
                              delimiter='\t',
                              inferSchema='true')

问题: 当我在 Spark History Server 中观看阶段时,结果如下。

3 个 csv 文件未正确加载。 有人有解决这个问题的方法或原因的想法吗?

查看实际输出,以防报告混淆。

顺便说一句,inferSchema 选项强制扫描整个 CSV 文件只是为了计算出它的模式,这里将读取的数据量从 700MB/文件增加了一倍到 1400MB。如果您使用的是长途数据,那么您的费用就会翻倍;如果是本地的,那还是浪费了很多时间。制定一次架构并在 DF 中声明它。