Как взорвать внутренние массивы в структуре внутри структуры в pyspark / - PullRequest
0 голосов
/ 27 сентября 2018

Я новичок в искре.Я пытался взорвать array внутри struct.Цикл JSON немного сложен, как показано ниже.

{
"id": 1,
"firstfield": "abc",
"secondfield": "zxc",
"firststruct": {
    "secondstruct": {
        "firstarray": [{
            "firstarrayfirstfield": "asd",
            "firstarraysecondfield": "dasd",
            "secondarray": [{
                "score": " 7 "
            }]
        }]
    }
}

}

Я пытаюсь получить доступ к полю score в поле secondarray, чтобы иметь возможность рассчитать несколько метрик и получить средний балл по каждому id.

1 Ответ

0 голосов
/ 27 сентября 2018

Если вы используете Glue, вам следует преобразовать DynamicFrame в DataFrame Spark, а затем использовать функцию explode :

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")
...