Я пытаюсь записать данные с помощью пакетного процесса из 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 символов, мои данные успешно попадут в коллекцию.