многострочные значения в столбце при искровом чтении файла - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть данные, как показано ниже, и мне нужно отделить их на основе ","

I/p file : 1,2,4,371003\,5371022\,87200000\,U

Желаемый результат должен быть:

a  b  c   d   e                           f
1  2  3   4   371003,5371022,87000000     U
val df = spark.read.option("inferSchma","true").option("escape","\\").option("delimiter",",").csv("/user/txt.csv")

1 Ответ

0 голосов
/ 20 сентября 2019

попробуйте это:

val df = spark.read.csv("/user/txt.csv")
df.show()

+---+---+---+-------+--------+---------+---+
|_c0|_c1|_c2|    _c3|     _c4|      _c5|_c6|
+---+---+---+-------+--------+---------+---+
|  1|  2|  4|371003\|5371022\|87200000\|  U|
+---+---+---+-------+--------+---------+---+



df.select(
    '_c0, '_c1, '_c2,
    regexp_replace(concat_ws(",", '_c3, '_c4, '_c5), "\\\\", ""),
    '_c6
  ).toDF("a","b","c","e","f").show(false)

+---+---+---+-----------------------+---+
|a  |b  |c  |e                      |f  |
+---+---+---+-----------------------+---+
|1  |2  |4  |371003,5371022,87200000|U  |
+---+---+---+-----------------------+---+
...