Запись данных с большим количеством специальных символов в MongoDB с помощью pyspark и mon go -spark-коннектора - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь записать данные с помощью пакетного процесса из Azure озера данных в MongoDB с помощью pyspark + mon go -искровой соединитель . Это должно быть очень просто, и это так, в большинстве моих таблиц. Однако есть некоторые проблемные символы c: когда я пытаюсь записать их, соединитель запишет только мои поля _id или затем запишет нечитаемый беспорядок в первое поле после _id.

Environment

  • Время выполнения блоков данных : 6.1 (включая Apache Spark 2.4.4, Scala 2.11)
  • Установленные библиотеки : org.mongodb .spark: mon go -spark-connector_2.11: 2.4.1

Я столкнулся с некоторыми проблемными полями c с большим количеством специальных символов, пример одного поля: ^(0213|0214|0215|0216|0217|0218|0219|0220)$

Всякий раз, когда я пытаюсь записать такие данные, я получаю такой контент:

{
    "_id":"208dcc9fd73071384f1e94d4eea08e07",
    "productId":"\b\u00001\t\b\u000444\t\b\u00000"
}

Это происходит независимо от того, указываю я схему для данных или нет в Spark , Вот как я читаю данные:

table_list = ['table_name', 'table_name2']
schema_list = [table_schema1, table_schema2]
df_list = []

for table in table_list:
  t_df = spark.read.option("header", True) \
        .option("delimiter", ";") \
        .option("encoding", "UTF-8") \
        .schema(schema_list[i]) \
        .csv(f'adl://{dls_name}.azuredatalakestore.net/<partitions>/{table}/')
  df_list.append(t_df)
  i+=1

Затем я создаю соединение MongoDB, добавляю поле _id, которое представляет собой ха sh моих первичных ключей, и записываю данные с помощью:

some_df.write.format("mongo").mode("overwrite").options(**mongoConfig).option("collection", "some_collection").save()

Если я выберу только поля без проблемных c символов, мои данные успешно попадут в коллекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...