我有两个具有相同分区数的数据集;说2(实际上是几千,但是为了简单起见,假设2)
在我的模式中,我有两个必填字段 userId和时间戳。
分区程序通过计算hash(userId)%numPartitions来工作。每个分区都按升序在组合(用户ID,时间戳)上排序。
我已将两个数据集另存为Parquet文件,位于两个不同的目录A和B中。 文件夹A中的数据集具有文件A0.parquet和A1.parquet 文件夹B中的数据集包含文件B0.parquet和B1.parquet
我的问题是:
分区#0 => A / A0.parquet
分区1 => A / A1.parquet
分区#0 => mergeSorted(A / A0.parquet,B / B0.parquet)
分区#1 => mergeSorted(A / A1.parquet,B / B1.parquet)
注意:该问题的先前版本被标记为重复,被错误地混淆了有关HDFS分区的问题,我在这里谈论的是Spark分区。 绝对不是重复的;问题的实质是关于如何在Spark上处理和合并分区,而不是Spark如何利用HDFS分区。 HDFS只是一个存储层,应该将Spark分区与HDFS分区分开考虑;可以考虑使用本地磁盘,NFS,EFS,s3来解决这个问题……