如何在Scala中解析RDD

时间:2018-02-22 01:35:37

标签: scala rdd

我有这个RDD:

Array[(String, String)] = Array((http://code.google.com/webtoolkit/doc/latest/DevGuideOptimizing.html,{(https://www.google.com/accounts/Login?continue=http%3A%2F%2Fcode.google.com%2Fwebtoolkit%2Fdoc%2Flatest%2FDevGuideOptimizing.html&followup=http%3A%2F%2Fcode.google.com%2Fwebtoolkit%2Fdoc%2Flatest%2FDevGuideOptimizing.html)}))

在值部分中,值的格式为:{}{(value1)}{(value1), (value2), (value3)}

我无法弄清楚如何解析这些值并列出它们,然后将其映射到键。

因为{}不是数组或列表。

1 个答案:

答案 0 :(得分:1)

如果您的数据类型为RDD[Array[(String, String)]],那么您可以

rdd.map(x => x.flatMap(y => y._1.replaceAll("[{()}]", "").split(",") ++ y._2.replaceAll("[{()}]", "").split(",")))

获取

RDD[Array[String]]

每个(String, String) 元组分开并收集在Array[String]

<强>更新

您的评论如下

  
    

数据类型是org.apache.spark.rdd.RDD [(String,String)]而不是RDD [Array [(String,String)]]

  

因此,对于这种情况,数组的内部地图可以忽略,你可以这样做

rdd.map(x => x._1.replaceAll("[{()}]", "").split(",") ++ x._2.replaceAll("[{()}]", "").split(","))

你应该得到与上面相同的结果。