簡體   English   中英

如何在Spark(Scala)中使用自定義分隔符讀取新行和新列的文件

[英]How to read a file with custom delimeter for new line and column in Spark (Scala)

讀取帶有換行符為"^*~"和列定界符為"^|&"的文本文件的最佳方法是什么。 我的文件中包含大量的列,例如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|
// +-----+-----+---+-------+-------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM