кодировка pyspark utf_8 не работает в ноутбуке jupyter - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь импортировать файл твитов из csv в pyspark. Spark и Pyspark установлены на моей локальной машине. Я запускаю pyspark в python3 на ноутбуке Jupyter.

Я использую pandas, и у меня никогда не было проблем с кодировкой. Python3 по умолчанию для меня UDF_8, поэтому нет смысла менять кодировку по умолчанию. У меня не установлено python2 на моей машине.

test = spark.read.option("delimiter", ",").csv('/Tweets_Last_Update.csv',header=True,inferSchema=True, multiLine=True,mode='DROPMALFORMED',encoding= "utf8")
test.take(5)

[Row (tweet = 'Radio France. Aprés 52 jours de gréve, Sibyle Veil временно отстранен от участия в проекте) Волонтеры #Radio # Franceâ €, автор = 'elaedanla', lang = 'fr', отметка времени = '2020-01-26T14: 46: 56.882731 + 01: 00'), Row (tweet = 'RT @gblardone: Il ya 150 миллиардов дэ де ре © служит для определения взаимопонимания между данными 21 ноября., Author = 'Ely_N7', lang = 'fr', метка времени = '2020-01-26T15: 00: 21.202304 + 01: 00'), строка (твит) = 'RT @Team_Macron_: Уход за вещами и соревнованиями по гранату GLI-F4 2020-01-26T14: 50: 19.430470 + 01: 00 '), Row (tweet = "Retraites: après l'avis très критический анализ для Conseil d'Etat, que faut-il Participre du projet de réforme \ xa0? â €, ", author = 'OlivierCaro75', lang = 'fr', отметка времени = '2020-01-26T15: 00: 58.246807 + 01: 00'), Row (tweet =" RT @ Jfh82: On dira Вспомогательные противники de la Réreme des retraites Que Les Modal это не так важно: LE 30 FEVRIER, mais qu'ilsâ… », author = 'NinouOceane', lang = 'fr', отметка времени = '2020-01-26T15: 00: 24.154999 + 01: 00 ')]

Как вы можете видеть, он неправильно закодирован!

Я также попробовал это после импорта:

import pyspark.sql.functions as F
import pyspark.sql.types as T
my_udf = F.udf(lambda x: x.encode().decode('UTF_8'),T.StringType())
test.withColumn('testcol', my_udf('tweet')).show()

И я получаю эти результаты: testcol = 'Radio France. Апрельские 52 вечера, Сивилла Вейл, приостановка планов по радио, Франция # 1016 *

Но это не сработало лучше!

И, наконец, я даже попытался перекодировать вручную все:

from pyspark.sql.functions import *
newDf = test.withColumn('reencoded', regexp_replace('tweet', 'é', 'é'))
newDf.show(5)

и снова здесь utf_8 все еще не отображается!

reencoded = ' Радио Франция. Апрель 52 дневник, Сибил Вейль, приостановить планирование волонтеров #Radio # France…

Есть идеи о том, что здесь может быть не так?

...