Итак, мне действительно нужна помощь с глупостью, но, видимо, я не могу справиться с этим сам.
У меня есть набор строк в файле этого формата (чтение с less
в OSX):
XXXXXXXX^GT^XXXXXXXX^G\N^G0^GDL^G\N^G2018-09-14 13:57:00.0^G2018-09-16 00:00:00.0^GCompleted^G\N^G\N^G1^G2018-09-16 21:41:02.267^G1^G2018-09-16 21:41:02.267^GXXXXXXX^G\N
YYYYYYYY^GS^XXXXXXXX^G\N^G0^GDL^G\N^G2018-08-29 00:00:00.0^G2018-08-29 23:00:00.0^GCompleted^G\N^G\N^G1^G2018-09-16 21:41:03.797^G1^G2018-09-16 21:41:03.81^GXXXXXXX^G\N
Итак, разделитель - это разделитель BEL
, и я загружаю CSV следующим образом:
val df = sqlContext.read.format("csv")
.option("header", "false")
.option("inferSchema", "true")
.option("delimiter", "\u2407")
.option("nullValue", "\\N")
.load("part0000")
Но когда я читаю его, он просто читает строки как один столбец таким образом:
XXXXXXXXCXXXXXXXX\N0DL\N2018-09-15 00:00:00.02018-09-16 00:00:00.0Completed\N\N12018-09-16 21:41:03.25712018-09-16 21:41:03.263XXXXXXXX\N
XXXXXXXXSXXXXXXXX\N0DL\N2018-09-15 00:00:00.02018-09-15 23:00:00.0Completed\N\N12018-09-16 21:41:03.3712018-09-16 21:41:03.373XXXXXXXX\N
Кажется, вместо ^G
.
есть
unkown character
(вы ничего не видите только потому, что я отформатировал его здесь в stackoverflow).
UPDATE:
может ли это быть ограничением искры для скалы?
Если я запускаю код с помощью scala следующим образом:
val df = sqlContext.read.format("csv")
.option("header", "false")
.option("inferSchema", "true")
.option("delimiter", "\\a")
.option("nullValue", "\\N")
.load("part-m-00000")
display(df)
Я получаю большой жир
java.lang.IllegalArgumentException: Unsupported special character for delimiter: \a
тогда как, если я бегу с python:
df = sqlContext.read.format('csv').options(header='false', inferSchema='true', delimiter = "\a", nullValue = '\\N').load('part-m-00000')
display(df)
все хорошо!