【发布时间】:2020-06-23 19:17:17
【问题描述】:
我有以下数据,需要准备一个schema文件来读取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]
如何获取包含逗号的列描述?
【问题讨论】:
-
你是如何使用你的架构文件的?
-
@EdgarRamírezMondragón Schema 文件放置在 EMR 中,并且有一个包装脚本使用 talend 与 S3 比较模式来获取数据。
-
试试 StructField("description",ArrayType(StringType())
-
@MohammadMurtazaHashmi 我已经试过了。这不适用于 CSV 文件。
标签: python csv apache-spark amazon-s3 parquet