我正在编写一个在HDFS上运行的Spark应用程序,输出是一个RDD,我必须将其保存到RocksDB。但我不知道如何让RocksDB与HDFS和Spark一起工作。请给我一些关于如何在HDFS上设置RocksDB并将其与Spark集成的说明
我们已经访问了网站https://github.com/facebook/rocksdb/tree/master/hdfs,但是我们找不到hdfs.h和libhdfs,所以我们不知道如何继续。
var sq = Seq[RDD[(String, Array[String])]]()
for (file <- files) {
val filename = file.getPath.toString()
val lines = sc.textFile(filename)
val doc_id = filename.split("/").last.dropRight(4)
val key_value = lines.flatMap(_.split(" ")).map(word => (word, Array((doc_id)))).reduceByKey((a,b) => a)
sq = sq :+ key_value
}
val output = sc.union(sq)
output.reduceByKey((a,b) => a ++ b) // this is the output RDD that we need to save to RocksDB发布于 2019-11-07 16:40:58
我不确定它是否适用于那个分支或hadoop,但您可以在任何RocksDB发行版中找到hdfs.h和libhdfs.so。
例如,对于Cloudera CDH,它们位于/opt/cloudera/parcels/CDH/include和/opt/cloudera/parcels/CDH/lib64下。
源代码在这里:https://github.com/apache/hadoop-hdfs/tree/trunk/src/c%2B%2B/libhdfs
让我知道你是否设法用HDFS编译了RocksDB,以及它是如何工作的?
https://stackoverflow.com/questions/58260524
复制相似问题