I want to read json a column which has dot(.) in it. Below code works fine it there is no dot.
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()
Use backtick (`) when you have special characters in columns.
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}|
+--------------+