Возникла проблема при чтении файла test2.csv в pyspark.
Тестовый файл test1.csv
a1^b1^c1^d1^e1
a2^"this is having
multiline data1
multiline data2"^c2^d2^e2
a3^b3^c3^d3^e3
a4^b4^c4^d4^e4
Тестовый файл test2.csv
a1^b1^c1^d1^e1
a2^this is having
multiline data1
multiline data2^c2^d2^e2
a3^b3^c3^d3^e3
a4^b4^c4^d4^e4
Ниже приведен код
schema = StructType([
StructField("A", StringType()),
StructField("B", StringType()),
StructField("C", StringType()),
StructField("D", StringType()),
StructField("E", StringType())
])
Создание кадра данных для указанных выше двух файлов CSV.
df1=spark.read.csv("s3_path/test1.csv",schema=schema,inferSchema=True,multiLine=True,sep='^')
df1.show(10,False)
print ('df1.count() is: ', df1.count())
Below is the output when I read the test1.csv file
+---+-----------------------------------------------+---+---+---+
|A |B |C |D |E |
+---+-----------------------------------------------+---+---+---+
|a1 |b1 |c1 |d1 |e1 |
|a2 |this is having
multiline data1
multiline data2|c2 |d2 |e2 |
|a3 |b3 |c3 |d3 |e3 |
|a4 |b4 |c4 |d4 |e4 |
+---+-----------------------------------------------+---+---+---+
df1.count() is: 4
df2 = spark.read.csv("s3_path/test2.csv",schema=schema,inferSchema=True,multiLine=True,sep='^')
df2.show(10,False)
print ('df2.count() is: ', df2.count())
Below is the output when I read the test2.csv file
+---------------+---------------+----+----+----+
|A |B |C |D |E |
+---------------+---------------+----+----+----+
|a1 |b1 |c1 |d1 |e1 |
|a2 |this is having |null|null|null|
|multiline data1|null |null|null|null|
|multiline data2|c2 |d2 |e2 |null|
|a3 |b3 |c3 |d3 |e3 |
|a4 |b4 |c4 |d4 |e4 |
+---------------+---------------+----+----+----+
df2.count() is: 6
Исходные файлы: Если мы видим разницу висходные файлы.test1.csv имеет "
в начале и в конце многострочных данных.Но test2.csv не имеет этого.
Описание проблемы: столбец B, 2-я строка содержит многострочные данные.Если мы видим вывод df2, он имеет 6 записей, здесь spark читает его как новую запись, которая not correct
.Вывод df1 имеет 4 записи, многострочные данные в столбце B 2-й строки обрабатываются как одна строка: correct
.
Вопрос: Может ли кто-нибудь помочь исправить код для чтения файла test2.csvа также правильно.