Ada*_*dam 9 scala partitioning apache-spark parquet
找到这个问题的答案我遇到了很多麻烦.假设我写了一个数据框到镶木地板,我使用repartition结合partitionBy得到一个很好的分区镶木地板文件.见下文:
df.repartition(col("DATE")).write.partitionBy("DATE").parquet("/path/to/parquet/file")
Run Code Online (Sandbox Code Playgroud)
现在稍后我想阅读镶木地板文件,所以我做了这样的事情:
val df = spark.read.parquet("/path/to/parquet/file")
Run Code Online (Sandbox Code Playgroud)
数据帧是否被分区"DATE"?换句话说,如果镶木地板文件被分区,火花在将其读入火花数据帧时会保持分区.还是随机分区?
此答案的原因和原因也是有帮助的.
读取存储为实木复合地板的数据时获取的分区数量遵循与读取分区文本相同的许多规则:
请注意,分区的镶木地板文件很少有分区具有完整的数据局部性,这意味着,即使数据中的分区计数与读取的分区计数匹配,也很可能将数据集重新分配到内存中。重新尝试实现分区数据局部性以提高性能。
考虑到上面的用例,如果您打算在此基础上利用本地分区操作,建议立即在“ DATE”列上重新分区。上面有关minPartitions和并行性设置的注意事项也适用于此。
val df = spark.read.parquet("/path/to/parquet/file")
df.repartition(col("DATE"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2914 次 |
| 最近记录: |