我想读取 json 中包含点(.)的列。如果没有点,下面的代码可以正常工作。
val data = """{
"abc.id": [{
"id": "123",
"name": "UNKNOWN"
}]}""";
val inputdata = spark.sparkContext.parallelize(data :: Nil);
val inputDF = spark.read.json(inputdata);
inputDF.show();
inputDF.select(inputDF.columns.map(c => col(c)(0).as(c)): _*).show()
当列中有特殊字符时,请使用反引号 (`)。
val data = """{
"abc.id": [{
"id": "123",
"name": "UNKNOWN"
}]}"""
val inputdata = Seq(data).toDS
val df = spark.read.json(inputdata);
df
.select(inputDF.columns.map(c => col(s"`${c}`")(0).as(c)):_*)
.show(false)
+--------------+
|abc.id |
+--------------+
|{123, UNKNOWN}|
+--------------+