我对spark还是个新手,我有个问题。
假设我需要向一个4节点集群提交一个spark应用程序,每个节点都有一个独立的存储后端(例如rocksdb),具有完全相同的k,v行,我需要从中读取要处理的数据。我可以通过从存储中获取所需的所有行并在数据集上调用parallelize来创建rdd:
public JavaRDD<value> parallelize(Map<key, value> data){
return sparkcontext.parallelize(new ArrayList<>(data.values()));
}
但是,我仍然需要从磁盘中为集群中的每个节点获取需要处理的每一行到内存中,即使每个节点只处理其中的一部分,因为在创建rdd之前,数据将在map结构上。
有没有别的办法,或者我看错了?hadoop不支持这个数据库,我不能在这个用例中使用hdfs。jdbc也不支持它。
先谢谢你。
暂无答案!
目前还没有任何答案,快来回答吧!