Spark не распознает новые строки, &, et c. из строки - PullRequest
1 голос
/ 01 августа 2020

Я пытаюсь обработать текстовые данные (твиты Twitter) с помощью PySpark. Эмодзи и специальные символы правильно отображаются красным цветом, но символы "\ n", "&" не отображаются. Spark их не узнает. Наверное, другие тоже. Один пример твита в моем Spark DF мог бы выглядеть так:

  • «Всем привет \ n \ nКак у вас дела? ? Будьте осторожны и наслаждайтесь»

Я бы хотел Spark, чтобы правильно их прочитать. Файлы хранятся как паркет, и я читаю их следующим образом:

tweets = spark.read.format('parquet')\
.option('header', 'True')\
.option('encoding', 'utf-8')\
.load(path)

Ниже приведены некоторые образцы входных данных, которые я взял из исходных файлов JSONL (позже я сохранил данные как паркет).

  • "full_text": "RT @OurWarOnCancer: Где наша ФЕДЕРАЛЬНАЯ просветительская кампания по вакцинации против ВПЧ ?! Где наша ФЕДЕРАЛЬНАЯ программа скрининга # легких ?! (и \ u2026"

  • "full_text": "\ u2b55 \ ufe0f # ВПЧ - наиболее важная причина #CervicalCancer Но это не только вызывает рак шейки матки (см. Рисунок \ ud83d \ udc47) \ n \ u2b55 \ ufe0f, что означает, что их можно ПРЕДОТВРАТИТЬ »

Чтение результатов непосредственно из файлов JSONL в том же распознавании проблем.

tweets = spark.read.\
.option('encoding', 'utf-8')\
.json(path)

Как Spark может их правильно распознать? Заранее спасибо.

1 Ответ

0 голосов
/ 01 августа 2020

приведенный ниже код может быть полезен для решения вашей проблемы,

Введено:

"Hello everyone\n\nHow is it going? ? Take care & enjoy"

"full_text": "RT @OurWarOnCancer: Where is our FEDERAL vaccination education campaign for HPV?! Where is our FEDERAL #lungcancer screening program?! (and\u2026 &"
"full_text": "\u2b55\ufe0f#HPV is the most important cause of #CervicalCancer But it doesn't just cause cervical cancer (see the figure\ud83d\udc47) \n\u2b55\ufe0fThat means they can be PREVENTED @theNCI @NCIprevention @AmericanCancer @cancereu @uicc @IARCWHO @EuropeanCancer @KanserSavascisi @AUTF_DEKANLIK @OncoAlert"

код для решения проблемы:

from pyspark.sql.functions import *

df=spark.read.csv("file:///home/sathya/Desktop/stackoverflo/raw-data/input.tweet")

df1=df.withColumn("cleandata",regexp_replace('_c0', '&|\\\\n', ''))
df1.select("cleandata").show(truncate=False)

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|cleandata                                                                                                                                                                                                                                                                                                                    |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|Hello everyoneHow is it going? ? Take care & enjoy                                                                                                                                                                                                                                                                          |
|"full_text": "RT @OurWarOnCancer: Where is our FEDERAL vaccination education campaign for HPV?! Where is our FEDERAL #lungcancer screening program?! (and\u2026 &"                                                                                                                                                           |
|"full_text": "\u2b55\ufe0f#HPV is the most important cause of #CervicalCancer But it doesn't just cause cervical cancer (see the figure\ud83d\udc47) \u2b55\ufe0fThat means they can be PREVENTED @theNCI @NCIprevention @AmericanCancer @cancereu @uicc @IARCWHO @EuropeanCancer @KanserSavascisi @AUTF_DEKANLIK @OncoAlert"|
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

...