关注我在此发布的问题:
我怀疑另一个......有可能像这样转换数据集:
2,1,3
1
3,6,8
进入这个:
2,1
2,3
1,3
1
3,6
3,8
6,8
基本上我想发现电影之间的所有关系。可以这样做吗?
我目前的代码是:
val input = sc.textFile("PATH")
val raw = input.lines.map(_.split(",")).toArray
val twoElementArrays = raw.flatMap(_.combinations(2))
val result = twoElementArrays ++ raw.filter(_.length == 1)
答案 0 :(得分:2)
鉴于input
是一个多行字符串。
scala> val raw = input.lines.map(_.split(",")).toArray
raw: Array[Array[String]] = Array(Array(2, 1, 3), Array(1), Array(3, 6, 8))
以下方法在您的示例中丢弃单元素数组1
。
scala> val twoElementArrays = raw.flatMap(_.combinations(2))
twoElementArrays: Array[Array[String]] = Array(Array(2, 1), Array(2, 3), Array(1, 3), Array(3, 6), Array(3, 8), Array(6, 8))
可以通过附加已过滤的raw
集合来修复它。
scala> val result = twoElementArrays ++ raw.filter(_.length == 1)
result: Array[Array[String]] = Array(Array(2, 1), Array(2, 3), Array(1, 3), Array(3, 6), Array(3, 8), Array(6, 8), Array(1))
我相信组合顺序无关紧要。
<小时/> 的更新强> SparkContext.textFile返回行的RDD,因此可以插入:
val raw = rdd.map(_.split(","))