如何在scala中读取带有点的json列?

问题描述 投票:0回答:1

我想读取 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()
scala
1个回答
0
投票

当列中有特殊字符时,请使用反引号 (`)。

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}|
+--------------+
© www.soinside.com 2019 - 2024. All rights reserved.