У меня есть данные json, в которых еще один json имеет поле в виде строки, поэтому я хочу проанализировать это и создать новые столбцы ниже: json
{
"start": "1234567679",
"data": "{\"ID\": 123 ,\"changeVlaue\" : 89, \"type\" : \"sensor\"}",
"end": "1234567689"
}
{
"start": "1234567889",
"data": "{\"name\": \"xyz \" ,\"changeState\" : \"Done \",\"mode\" : \"new \"}",
"end": "1234567989"
}
{
"start": "1234568679",
"data": "{\"field\": \"all\" ,\"ChangedBy\" : \"Admin\", \"count\" : 2}",
"end": "1234568999"
}
из этого json Я хочу создать новые столбцы
start changeVlaue changeState ChangedBy end
1234567679 89 null null 1234567689
1234567889 null Done null 1234567989
1234568679 null null Admin 1234568679
Одна логика, которую я могу придумать, - это использовать udfs
def getchangeVlaue(s1: String ) = {
// parse and return changeVlaue
}
def getchangeState(s1: String) = {
// parse and return changeState
}
def getChangedBy(s1: String) = {
// parse and return ChangedBy
}
val df = spark.read.json("path to json")
val tdf = df.withColumn("changeVlaue",getchangeVlaue($"data")).withColumn("changeState",getchangeState($"data")).withColumn("ChangedBy",getchangeState($"data"))
, но с вышеупомянутым решением я не хочу это делать, потому что у меня есть 100 таких разных полей, поэтому мне нужно вызвать withColumn 100раз,
Есть ли лучший способ, как pivot для файлов JSON?