将文件从 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 中声明它。
我在 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 中声明它。