Когда я использую приведенный ниже код, он добавляет двойные кавычки в начале и в конце данных. В идеале это действительно так, поскольку я говорю, что это файл с разделителями канала, и канал поступает в данные. Но у меня есть требование не добавлять двойную кавычку в начало и конец данных. Есть ли способ добиться этого?
data = [{"Cnt": 'A|1'},{"Cnt": 'B|2'}]
rdd = sc.parallelize(data)
df_test = rdd.toDF()
df_test.repartition(1).write.option('header','false').option("delimiter",'|').option("quoteAll", 'false').option("quote", None).mode("overwrite").csv(path_of_file)
Данные в файле после экспорта выглядят так:
"A|1"
"B|2"
Но мне нужны данные в файле, как показано ниже.
A|1
B|2
Версия Apache Spark — 3.3.1
Я воспроизвел тот же код, что и вы, даже я получил данные в кавычках, как показано ниже
Позже я попытался сохранить в текстовом формате, после чего я получил вывод без кавычек.
data = [{"Cnt": 'A|1'},{"Cnt": 'B|2'}]
rdd = sc.parallelize(data)
df_test = rdd.toDF()
df_test.repartition(1).write.option('header','false').option("delimiter",'|').option("quoteAll", 'false').option("quote", None).mode("overwrite").text("/demot/")
Оба формата имеют свои преимущества и недостатки, выбор между ними зависит от ваших конкретных требований. Основное отличие состоит в том, что формат теста не имеет определенной схемы и не обрабатывает типы данных и нулевые значения. Когда вы используете структурированные данные, предпочтительнее формат csv, который может сохранять схему и обрабатывать тип данных и нулевые значения.
Спасибо, Джайшанкар.
Это здорово, Джей. Работает. Кстати, я хотел бы знать, есть ли недостатки в написании с использованием метода
text
по сравнению с методомcsv