Apache spark 拼花地板和Spark中的分割策略
我有一个工作,读取csv文件,将其转换为数据帧,并在拼花地板中写入。在拼花地板中写入数据时,我正在使用附加模式。使用这种方法,在每次写入中都会生成一个单独的拼花文件。我的问题是:Apache spark 拼花地板和Spark中的分割策略,apache-spark,parquet,Apache Spark,Parquet,我有一个工作,读取csv文件,将其转换为数据帧,并在拼花地板中写入。在拼花地板中写入数据时,我正在使用附加模式。使用这种方法,在每次写入中都会生成一个单独的拼花文件。我的问题是: 1) 如果每次我将数据写入拼花地板模式时,都会得到一个新文件 附加,它是否会影响读取性能(如现在的数据一样) 分布在不同长度的分区拼花地板文件中) 2) 是否有一种方法可以完全基于 数据的大小 3) 我们需要考虑一个定制的分区策略来实现吗 第二点? 我正在使用Spark 2.3 如果 在这种情况下,Spark需要
- 1) 如果每次我将数据写入拼花地板模式时,都会得到一个新文件 附加,它是否会影响读取性能(如现在的数据一样) 分布在不同长度的分区拼花地板文件中)
- 2) 是否有一种方法可以完全基于 数据的大小
- 3) 我们需要考虑一个定制的分区策略来实现吗 第二点? 我正在使用Spark 2.3
重新分区
或合并
。后者将造成产出不平衡
文件,但性能很好
此外,您还有configspark.sql.files.maxRecordsPerFile
或选项
maxRecordsPerFile
以防止文件过大,但通常是这样
这不是问题我可能有一个场景,其中添加了很少的记录,在这种情况下,如果我使用append write模式,它将使用很少的数据创建一个新分区。如果我使用重新分区或合并,我必须读取整个拼花地板数据,然后使用合并来合并分区,删除所有旧分区,然后存储这个新的重新分区的数据帧。这样对吗?