Когда я создаю кадр данных из файла партера, который мне дают, я могу показать и увидеть данные в правильном формате:
val df = spark.read.parquet("/Users/myuser/Downloads/data.parquet")
df.show(false)
, которые дают мне этот результат
+---------------------------+
|resgistration_desc_1_number|
+---------------------------+
|ABC95234 |
+---------------------------+
, когдаЯ собираю и распечатываю каждую полученную строку:
df.collect.foreach(println)
[ABC95234]
проблема возникает, когда я пишу df как json:
df.write.mode(SaveMode.Overwrite).json("/tmp/data.json")
Я получаю символ Unicode
{"resgistration_desc_1_number":"\u0000\u0000A\u0000B\u0000C\u00009\u00005\u00002\u00003\u00004\u0000\u0000"}
когда я хочу отфильтровать значение, мне нужно отфильтровать длинную строку с символом Unicode:
val test1 = "ABC95234"
val test2 = "\u0000\u0000A\u0000B\u0000C\u00009\u00005\u00002\u00003\u00004\u0000\u0000"
df.filter('resgistration_desc_1_number === test1).show <- this one show nothing
df.filter('resgistration_desc_1_number === test2).show <- this one show the value ABC95234
Я бы хотел, чтобы файл json просто записывался так:
{"resgistration_desc_1_number":"ABC95234"}
иЯ хотел бы фильтр со строкой test1.Я пытаюсь написать json с другой кодировкой, но она не работает:
df.write.option("encoding","unicode").json("/tmp/data_unicode.json")
df.write.option("encoding","UTF-16").json("/tmp/utf_16.json")
Мой вопрос: как лучше решить эту проблему?У тебя есть идеи?