我正在对一堆数据进行一些预处理。每行都有以下架构
<row Att1="...." Att2="..." Attn"...." />
但并非所有行都存在所有属性。也就是说,有些行可能只有三个属性,而另一些有五个等等。此外,没有办法表示每行中有多少属性。
我想形成一个RDD或DataFrame(prefrable)并对数据运行一些查询。但是,我无法找到分割每一行的好方法。例如,按空间拆分不起作用。我在处理过程中只需要一些属性。我尝试使用模式匹配来提取存在于所有行中的4个属性,如下所示,但它失败了。
val pattern = "Att1=(.*) Att3=(.*) Att10=(.*) Att11=(.*)".r
val rdd1 = sc.textFile("file.xml")
val rdd2 = rdd1.map {line => line match {
case pattern(att1,att2,att3,att4) => Post(att1,att2,att3,att4)
}
}
case class Post(Att1: String, Att3: String, Att10: String, Att11: String)
P.S。我使用scala。
答案 0 :(得分:2)
这不是一个火花问题,而是一个scala问题。数据是存储在多个文件中的吗?
我建议按文件进行并行化,然后逐行解析。
对于解析我会: