Чтение CSV с опцией multiLine и опцией кодирования - PullRequest
1 голос
/ 07 октября 2019

В лазурных блоках данных, когда я читаю файл CSV с multiline = 'true' и encoding = 'SJIS', кажется, что опция кодирования игнорируется. Если я использую опцию multiline, используйте спарк по умолчанию encoding, то есть UTF-8, но мой файл в формате SJIS. Есть ли какое-то решение для этого, любая помощь оценит. Вот мой код, который я использую, и я использую pyspark.

df= sqlContext.read.format('csv').options(header='true',inferSchema='false',delimiter='\t',encoding='SJIS',multiline='true').load('/mnt/Data/Data.tsv')

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

К сожалению, вы не можете использовать "multiline" и "charset" вместе, если вы используете вместе, кодировка будет установлена ​​по умолчанию.

Кодировка базы данных Azure: по умолчанию UTF-8, но может быть установлена ​​другая допустимая кодировкаИмена.

Чтобы объяснить это ясно, я взял пример кодировки SJIS-подписи « Наличные + 邃 邃 Подпись ツ ョ », взятой в качестве столбца « подпись » навходной файл.

Это ожидаемое поведение, если вы используете multiline=true и encoding/charset to “SJIS”, который возвращает вывод, такой же, как default charset UTF-8.

enter image description here

По умолчанию: Кодировка "UTF-8"

enter image description here

Кодирование / кодировка для "SJIS"":

enter image description here

Надеюсь, это поможет.

0 голосов
/ 08 октября 2019

Согласно моим исследованиям, когда мы читаем CSV-файл в столбцах данных Azure, он не поддерживает опции multiline. Поэтому я предлагаю вам обновить свой код, как показано ниже.

df= spark.read.format('csv').options(header='true',inferSchema='false',delimiter='\t',charset='SJIS').load('/FileStore/tables/test.csv')

enter image description here Для получения более подробной информации, пожалуйста, обратитесь к https://docs.databricks.com/data/data-sources/read-csv.html. enter image description here

...