Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Hadoop 有一个大的拼花锉还是有很多小的拼花锉比较好?_Hadoop_Apache Spark_Parquet - Fatal编程技术网

Hadoop 有一个大的拼花锉还是有很多小的拼花锉比较好?

Hadoop 有一个大的拼花锉还是有很多小的拼花锉比较好?,hadoop,apache-spark,parquet,Hadoop,Apache Spark,Parquet,我知道hdfs会将文件分割成64mb的块。我们有来自流媒体的数据,我们可以将它们存储到大文件或中等大小的文件中。柱状文件存储的最佳大小是多少?如果我能将文件存储到最小列为64mb的位置,它会比拥有1gb文件节省计算时间吗?目标是每个文件大约1gb(spark分区)(1) 理想情况下,您将使用snappy压缩(默认),因为snappy压缩的拼花地板文件是可拆分的(2) 使用snappy而不是gzip将显著增加文件大小,因此,如果存储空间是一个问题,则需要考虑这一点 .option(“compres

我知道hdfs会将文件分割成64mb的块。我们有来自流媒体的数据,我们可以将它们存储到大文件或中等大小的文件中。柱状文件存储的最佳大小是多少?如果我能将文件存储到最小列为64mb的位置,它会比拥有1gb文件节省计算时间吗?

目标是每个文件大约1gb(spark分区)(1)

理想情况下,您将使用snappy压缩(默认),因为snappy压缩的拼花地板文件是可拆分的(2)

使用snappy而不是gzip将显著增加文件大小,因此,如果存储空间是一个问题,则需要考虑这一点

.option(“compression”,“gzip”)
是覆盖默认snappy压缩的选项

如果需要调整数据集/数据帧/RDD的大小/重新分区,请调用
.coalesce(
或最坏情况下的
.repartition()
函数。警告:重新分区(尤其是合并)可能会导致数据重新排列,因此请谨慎使用

此外,拼花地板文件大小以及所有文件的大小通常应大于HDFS块大小(默认为128MB)

(一)
2)

请注意,拼花地板文件在内部分为
行组

因此,通过使拼花文件变大,如果基线拼花文件不小,行组仍然可以相同。在处理上没有巨大的直接损失,但相反,如果您的拼花文件较小/很小(例如,行组不能跨越多个拼花文件),则读者有更多机会利用可能更大/更优化的行组

此外,较大的拼花文件不会限制读卡器的并行性,因为每个拼花文件可以在逻辑上分解为多个
拆分(由一个或多个行组组成)

较大的拼花地板文件的唯一缺点是创建它们需要更多的内存。因此,如果需要增加Spark executors的内存,您可以当心


行组
是拼花地板文件进行垂直分区的一种方法。每个
行组
都有许多行块(每列一个,这是一种为拼花地板中的数据集提供水平分区的方法)

我们正在使用带有配置单元上下文的合并函数,其中一个文件的执行器为50个,约15GB,它运行起来很有魅力。@garren-s您不需要使用snappy使拼花地板文件可拆分,无论使用何种压缩方式,只要拼花文件足够大,足以包含多个行组(文件中分区的拼花名称),则使用的拼花文件始终是可拆分的。您引用的文章标题有误导性,但文章的文本和下面的后续评论之一确实澄清了拼花地板的所有压缩类型,为您提供了可拆分的文件。但是,除非使用snappy之类的流式压缩,否则CSV文件是不可拆分的。