Как взорвать внутренние массивы в структуре внутри структуры в pyspark/
Я новичок в искре. Я пытался взорвать array
внутри struct
, Цикл JSON немного сложен, как показано ниже.
{
"id": 1,
"firstfield": "abc",
"secondfield": "zxc",
"firststruct": {
"secondstruct": {
"firstarray": [{
"firstarrayfirstfield": "asd",
"firstarraysecondfield": "dasd",
"secondarray": [{
"score": " 7 "
}]
}]
}
}
}
Я пытаюсь получить доступ к score
поле под secondarray
поле, чтобы иметь возможность рассчитать несколько показателей и придумать средний балл каждого id
,
1 ответ
Решение
Если вы используете Glue, вам следует преобразовать DynamicFrame в DataFrame Spark, а затем использовать функцию разнесения:
from pyspark.sql.functions import col, explode
scoresDf = dynamicFrame.toDF
.withColumn("firstExplode", explode(col("firststruct.secondstruct.firstarray")))
.withColumn("secondExplode", explode(col("firstExplode.secondarray")))
.select("secondExplode.score")
scoresDyf = DynamicFrame.fromDF(scoresDf, glueContext, "scoresDyf")