我获得了以下格式的输入文件 (A B C D]) (B,[d,A])
如何格式化此输入以获取表单中的值
key =>列表()
以下代码用于根据空间分割线条。
val textFile = sc.textFile("hdfs://...")
val counts = textFile.flatMap(line => line.split(" "))
如何存储这种格式化输入?
答案 0 :(得分:0)
为了解决这个问题,我开始使用多个数据元素,无论是否有空格分隔。
%> cat junk.txt
(a,[b,c,d,e]) (w,[x,y,z])
(q,[wert,cv])(xx,[aa])
然后我打开文件并在每个前导(
paren上拆分输入而不消耗该字符。
val input = io.Source.fromFile("junk.txt")
.getLines()
.flatMap(_.split("(?=\\()"))
我还需要一种方法来识别我正在寻找的模式。
val dataRE = "\\(([^,]+),\\[([^\\]]+)]".r.unanchored
现在将数据从String
转换为Map
s。
input.collect{case dataRE(k,v) => k -> v.split(",").toList}.toMap
结果:Map[String,List[String]]
Map(a -> List(b, c, d, e), w -> List(x, y, z), q -> List(wert, cv), xx -> List(aa))