我正在写一个在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
1条答案
按热度按时间x4shl7ld1#
我不确定它是否适用于该分支或rocksdb,但您可以在任何hadoop发行版中找到hdfs.h和libhdfs.so。
e、 g.对于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,以及它是如何工作的?