我试图将文件名附加到文件中的每个记录。我想如果RDD是Array,那我就很容易做到。
转换RDD类型或解决此问题的一些帮助将非常感谢!
In(String,String)type
scala> myRDD.first()(1)
scala><console>:24: error: (String, String) does not take parametersmyRDD.first()(1)
在数组(字符串)
中scala> myRDD.first()(1)
scala> res1: String = abcdefgh
我的功能:
def appendKeyToValue(x: Array[Array[String]){
for (i<-0 to (x.length - 1)) {
var key = x(i)(0)
val pattern = new Regex("\\.")
val key2 = pattern replaceAllIn(key1,"|")
var tempvalue = x(i)(1)
val finalval = tempvalue.split("\n")
for (ab <-0 to (finalval.length -1)){
val result = (I am trying to append filename to each record in the filekey2+"|"+finalval(ab))
}
}
}
答案 0 :(得分:8)
如果您有RDD[(String, String)]
,则可以通过调用
val firstTupleField: String = myRDD.first()._1
如果您想将RDD[(String, String)]
转换为RDD[Array[String]]
,可以执行以下操作
val arrayRDD: RDD[Array[String]] = myRDD.map(x => Array(x._1, x._2))
您也可以使用部分函数来构造元组:
val arrayRDD: RDD[Array[String]] = myRDD.map { case (a,b) => Array(a, b) }