我正在调试Spark应用程序:
val rdd1 = sparkContext.makeRDD(keyValueDataList1).partitionBy(new HashPartitioner(12))
rdd1.flatMapValues( value =>
// print the key (it is a part of value) and spark partitionId
// cache value in local memory
...
)...collect()
val rdd2 = sparkContext.makeRDD(keyValueDataList2).partitionBy(new HashPartitioner(12))
rdd2.flatMapValues( value =>
// print the key (it is a part of value) and spark partitionId
// wish use local cached value of keyValueDataList1, but failed
...
)...collect()
keyValueDataList2的键都存在于keyValueDataList1中,我真的发现同一个键的partitionId相同。但是,它在不同的主机上:
在rdd1中,我进入了主机192.168.31.19:
在rdd2中,我进入了主机192.168.31.20:
因此,在rdd2.flatMapValues中,我找不到缓存在不同主机上的KEY 1131的数据,而且似乎partitionId在主机之间又重新定位了。
我该如何解决问题?我不想使用分布式缓存或分布式文件系统。