在spark scala中按主题划分rdf数据集
我是函数式编程语言的新手,我正在努力学习spark scala 目标是按主题划分rdf数据集 代码如下:在spark scala中按主题划分rdf数据集,scala,apache-spark,Scala,Apache Spark,我是函数式编程语言的新手,我正在努力学习spark scala 目标是按主题划分rdf数据集 代码如下: object SimpleApp { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf(). setAppName("SimpleApp"). setMaster("local[2]"). set("spark.e
object SimpleApp {
def main(args: Array[String]): Unit = {
val sparkConf =
new SparkConf().
setAppName("SimpleApp").
setMaster("local[2]").
set("spark.executor.memory", "1g")
val sc = new SparkContext(sparkConf)
val data = sc.textFile("/home/hduser/Bureau/11.txt")
val subject = data.map(_.split("\\s+")(0)).distinct.collect
}
}
因此,我可以恢复主题,但它也返回一个字符串数组mapPartitions(func)和mapPartitionsWithIndex(func):func需要是迭代器
那么我该如何继续呢?按主题对RDD进行分区可能最好使用HashPartitioner。HashPartitioner的工作原理是获取N元组的RDD,并按键eg对数据进行排序 没药:
("sub1", "desc1")
("sub2", "desc2")
("sub1", "desc3")
("sub2", "desc4")
myPairRDD.partitionBy(new HashPartitioner(2))
变成:
分区1:
("sub1", "desc1")
("sub1", "desc3")
分区2:
("sub2", "desc2")
("sub2", "desc4")
因此,您的subject
srdd可能应该这样创建(注意创建元组/对RDD的额外括号):
有关更多信息,请参见此处的图表:能否添加输入文件及其生成的输出的示例?我的输入文件是一个Ntriples格式的rdf数据集:对于每一行,我们都有主题,对象和谓词及其生成的输出:HashPartitioner无法对数组键进行分区。如果解决了问题,请将答案标记为正确
val subjectTuples = data.map((_.split("\\s+")(0), _.split("\\s+")(1)))