代码之家  ›  专栏  ›  技术社区  ›  ZZzzZZzz

如何在pyspark中的结构内部分解结构中的内部数组/

  •  2
  • ZZzzZZzz  · 技术社区  · 7 年前

    我是新来的。我试过引爆一个炸弹 array 内部 struct . JSON循环有点复杂,如下所示。

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

    }

    我正在尝试访问 score secondarray 字段,以便能够计算几个指标,并得出每个指标的平均得分 id

    1 回复  |  直到 7 年前
        1
  •  1
  •   Yuriy Bondaruk    7 年前

    如果您使用的是胶水,那么应该将DynamicFrame转换为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")
    
    推荐文章