Python 在spark中读取csv文件,字段中使用逗号

Python 在spark中读取csv文件,字段中使用逗号,python,csv,apache-spark,amazon-s3,parquet,Python,Csv,Apache Spark,Amazon S3,Parquet,我有以下数据,我需要准备一个模式文件来读取spark中的数据 id, date, producttype, description 1, 02/01/2020,Standard,["ABC, PQR"] 2, 03/02/2020,Standard,["ABC, PQR"] 3, 20/02/2020,Standard,["ABC, PQR"] 我准备的架构文件是: COLUMN_ID, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE, PRECIS

我有以下数据,我需要准备一个模式文件来读取spark中的数据

id, date, producttype, description
1, 02/01/2020,Standard,["ABC, PQR"]
2, 03/02/2020,Standard,["ABC, PQR"]
3, 20/02/2020,Standard,["ABC, PQR"]
我准备的架构文件是:

COLUMN_ID, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE, PRECISION, DATA_SCALE
1, id, NUMBER,,N,38,0
2, date,VARCHAR2,15,N,,
3, producttype, VARCHAR2,10,N,,
4, description, VARCHAR2,15,N,,
要在spark中验证此数据,我将使用以下命令:

val schema_a = StructType(List(StructField("id",IntegerType,true),
StructField("date",StringType,true),
StructField("producttype",StringType,true),
StructField("description",StringType,true)))
数据放在S3存储桶中

a_read_schema = 
spark.read.format("csv").option("delimiter","π").schema(schema_a).load("s3://data/202003110000")
读取此文件后的输出如下:

a_read_schema.show()

id, date, producttype, description
1, 02/01/2020,Standard,[ABCπ PQR]
2, 03/02/2020,Standard,[ABCπ PQR]
3, 20/02/2020,Standard,[ABCπ PQR]

如何获取包含逗号的列描述?

我想没有可用的函数。注释中提到的ArrayType不适用于csv数据类型

另一种方法是读入以逗号分隔的文件,然后在最后两列合并

这可以通过以下方式实现:

 val schema_a = StructType(List(StructField("id",StringType,true),
                                StructField("date",StringType,true),
                                StructField("producttype",StringType,true),
                                StructField("description1",StringType,true),
                                StructField("description2",StringType,true)))


spark.read.option("delimiter",",").schema(schema_a)
.csv(your-file-path)
.withColumn("description", concat_ws(",", col("description1"), col("description2")))
.drop("description1", "description2")
.show()

如何使用您的模式文件?@EdgaramírezMondragón模式文件放在EMR中,有一个包装器脚本,它使用talend与S3比较模式来获取数据。try StructField(“description”,ArrayType(StringType())@MohammadMurtazaHashmi我已经尝试过了。这不适用于CSV文件。