读取新行分隔符作为"^*~"
和列分隔符作为"^|&"
的文本文件的最佳方法是什么?我有一个包含大量列的文件,例如 100 多个。请提出有效的方法。下面是包含几个字段的文件。
我有一个文件,例如
abcd^|&cdef^|&25^|&hile^|&12345^*~xyxxx^|&zzzzz^|&70^|&dharan^|&6567576
我希望这个文件像
fname lname age address phone
abcd cdef 25 abc 1234523
xyxxx zzzzz 70 xyz 6567576
您需要使用分隔符的转义字符进行flatMap和拆分以创建行,然后使用相同的方法在第二个分隔符上进行拆分,然后进行模式匹配以获得元组:
val str = "abcd^|&cdef^|&25^|&hile^|&12345^*~xyxxx^|&zzzzz^|&70^|&dharan^|&6567576"
val rdd = sc.parallelize(Seq(str))
val rdd2 = rdd.flatMap(_.split("\^\*~")).map(_.split("\^\|\&") match {
case Array(a, b, c, d, e) => (a, b, c, d, e)
})
rdd2.toDF("fname","lname","age","address","phone").show
// +-----+-----+---+-------+-------+
// |fname|lname|age|address| phone|
// +-----+-----+---+-------+-------+
// | abcd| cdef| 25| hile| 12345|
// |xyxxx|zzzzz| 70| dharan|6567576|
// +-----+-----+---+-------+-------+