我的设置:
两个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
观察:
问题:
在读取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
时,是否可以更清晰地控制分区数?