我终于被介绍给大家了,我正试着更好地理解它。我意识到,在运行spark时,最好有至少与内核一样多的地板文件(分区),以便尽可能充分地利用spark。但是,制作一个大的拼花文件和几个较小的拼花文件来存储数据有什么好处/缺点?
作为一个测试,我使用这个数据集:
https://nyc-tlc.s3.amazonaws.com/trip+data/fhvhv_tripdata_2021-01.parquet
这是我正在测试的代码:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.master("local[*]") \
.appName('test') \
.getOrCreate()
df = spark.read.parquet('fhvhv_tripdata_2021-01.parquet')
df.write.parquet('test.parquet')
df.write.parquet('./test')当我ls -lh文件时,我看到: test.parquet文件是4.0K

写入目录所创建的两个文件是: 2.5K和189M

当我把这些读回不同的数据时,它们的计数是相同的。

什么时候才是最好的做法呢?在写入目录时,平衡文件大小的最佳实践是什么?您应该这样做吗?在编写/阅读拼花文件时,请提供任何指导/经验规则。
发布于 2022-06-11 13:19:47
在spark中,您可以使用重新分区将文件分解为几乎相等的块,并且正如databricks培训中所建议的那样,您可以选择核数并使用该数字重新划分文件,因为默认的混乱分区设置为200,除非有大量的数据,否则这是有点高的。
关于重新分区的一个具体问题是,当您的数据具有复杂的数据类型,而这些数据的大小变化很大时,您可以参考堆栈上的this问题。
https://stackoverflow.com/questions/72483511
复制相似问题