在读取Parquet文件时,什么控制分区数?

时间:2015-05-11 12:56:45

标签: amazon-web-services apache-spark parquet

我的设置:

两个Spark群集。一个在EC2上,一个在亚马逊EMR上。两者都使用Spark 1.3.1。

EMR群集随emr-bootstrap-actions一起安装。 EC2集群安装了Spark的默认EC2脚本。

代码:

读取包含12个Parquet文件的文件夹并计算分区数

val logs = sqlContext.parquetFile(“s3n://mylogs/”)
logs.rdd.partitions.length

观察:

  • 在EC2上,这段代码给了我12个分区(每个文件一个,有意义)。
  • 在EMR上,这段代码给了我138个(!)分区。

问题:

在读取Parquet文件时,什么控制分区数?

我在S3上阅读完全相同的文件夹,使用完全相同的Spark版本。这让我相信可能存在一些控制分区发生方式的配置设置。有没有人有这方面的更多信息?

非常感谢见解。

感谢。

更新

似乎许多分区都是由EMR的S3文件系统实现(com.amazon.ws.emr.hadoop.fs.EmrFileSystem)创建的。

删除时

<property><name>fs.s3n.impl</name><value>com.amazon.ws.emr.hadoop.fs.EmrFileSystem</value></property>

来自core-site.xml(特此回复到Hadoop的S3文件系统),我最终得到了12个分区。

使用EmrFileSystem运行时,似乎可以通过以下方式控制分区数:

<property><name>fs.s3n.block.size</name><value>xxx</value></property>

使用EmrFileSystem时,是否可以更清晰地控制分区数?

0 个答案:

没有答案