Проблема в механизме блоков данных при экспорте CSV с греческими символами

В лазурных данных у меня есть искровой фрейм данных с греческими символами в некоторых столбцах. Когда я показываю фрейм данных, символы отображаются правильно. Однако, когда я решаю загрузить csv с фреймом данных из пользовательского интерфейса databricks, созданный файл csv не содержит греческих символов, а вместо этого содержит странные символы и знаки. Похоже, возникла проблема с кодировкой. Кроме того, я попытался создать csv с помощью следующего кода Python:

df.write.csv("FileStore/data.csv",header=True)

Но происходит то же самое, поскольку для pyspark нет опции кодирования. Похоже, я не могу выбрать кодировку. Кроме того, фрейм данных сохраняется как одна строка, и строки не разделяются новой строкой. Есть ли способ обойти эту проблему? Спасибо.


person Kon Kyri    schedule 26.07.2019    source источник


Ответы (1)


Кодирование поддерживается pyspark!

Например, когда я читаю файл:

spark.read.option("delimiter", ";").option("header", "true").option("encoding", "utf-8").csv("xxx/xxx.csv")

Теперь вам просто нужно выбрать правильную кодировку для греческих символов. Также возможно, что любая консоль / программное обеспечение, которое вы используете для проверки ввода, по умолчанию не читает utf-8.

person Josselin G.    schedule 26.07.2019
comment
Дело в том, что pyspark databricks не поддерживает кодировку UTF-8-sig, которая поддерживает греческие символы. Проблема конкретно в pyspark databricks. - person Kon Kyri; 26.07.2019
comment
Ах я вижу. Не знаю, есть ли список всех доступных кодировок для pyspark. Так что я не могу не извиниться. Может быть, обходным путем было бы загрузить как байты, а затем использовать python udf для декодирования? - person Josselin G.; 26.07.2019
comment
Спасибо, Жосселин. Проблема в том, что я хочу экспортировать csv в его окончательной форме и в правильном формате. Я не хочу обрабатывать его дальше после загрузки из блоков данных. - person Kon Kyri; 26.07.2019