Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 读取拼花地板文件时,什么控制分区的数量?_Amazon Web Services_Apache Spark_Parquet - Fatal编程技术网

Amazon web services 读取拼花地板文件时,什么控制分区的数量?

Amazon web services 读取拼花地板文件时,什么控制分区的数量?,amazon-web-services,apache-spark,parquet,Amazon Web Services,Apache Spark,Parquet,我的设置: 两个火花团。一个在EC2上,一个在亚马逊EMR上。这两个都使用Spark 1.3.1 EMR群集已与一起安装。EC2集群是使用Spark的默认EC2脚本安装的 代码: 读取包含12个拼花文件的文件夹,并计算分区数 val logs = sqlContext.parquetFile(“s3n://mylogs/”) logs.rdd.partitions.length 观察结果: 在EC2上,这段代码为我提供了12个分区(每个文件一个,有意义) 在EMR上,这段代码给了我138(!

我的设置:

两个火花团。一个在EC2上,一个在亚马逊EMR上。这两个都使用Spark 1.3.1

EMR群集已与一起安装。EC2集群是使用Spark的默认EC2脚本安装的

代码:

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

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

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

读取拼花地板文件时,什么控制分区的数量

我在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>

当使用
EmrFileSystem
时,是否有一种更干净的方法来控制分区的数量?

如果数据驻留在EMR中的HDFS上,它是否仍然会提供同样多的分区?似乎许多分区来自EMR S3文件系统实现(
com.amazon.ws.EMR.hadoop.fs.EmrFileSystem
)。查看我的更新。这使我假设从HDFS读取将返回一个“正常”数量的分区,因为这将使用Hadoop自己的fs实现(但尚未测试)。我得出了相同的结论,默认块大小为64MB。这是否值得关注?更多的分区允许更多的并行任务。S3并不关注文件系统块结构,数据是通过HTTP从S3获取的。可能需要根据块大小平衡任务开销。可以使用sc.hadoopConfiguration.set(“fs.s3n.block.size”)调整块大小。你说得对,克里斯托弗。感谢Hadoop的配置技巧,我没有想到这一点。我想我将不得不接受近似的分区数量。ERMFS怪异:)
<property><name>fs.s3n.block.size</name><value>xxx</value></property>