【发布时间】:2022-01-24 15:08:01
【问题描述】:
我有一个包含几列的.csv 文件。
以一行为例:
aaa,bbb,{'foo': 'xxx', 'bar': 'zzz'}
我想阅读它并转换为以下类型的架构:
field1: String,
field2: String,
field3: Map[String, String]
我可以用这样的原始类型来做到这一点:
private val someSchema =
StructType(
StructField("field1", StringType, true) ::
StructField("field2", StringType, true) ::
StructField("field3", StringType, true) :: Nil)
spark.read
.format("csv")
.option("header", true)
.schema(someSchema)
.load("path.csv")
但是当涉及到 Map[String, String] 时它不起作用,因为
线程“主”org.apache.spark.sql.AnalysisException 中的异常:CSV 数据源不支持 map
数据类型。
我该如何以另一种方式做到这一点?
【问题讨论】:
-
也许您可以将其读为
String,然后将from_json()应用于它。 spark.apache.org/docs/latest/api/scala/org/apache/spark/sql/…
标签: dataframe scala csv apache-spark apache-spark-sql