【问题标题】:Query Array Struct column in Spark SQL在 Spark SQL 中查询数组结构列
【发布时间】:2020-03-05 18:23:44
【问题描述】:

我需要使用 Spark SQL 查询 Array Struct 数据类型列

列名:Metrics

列数据类型:array<struct<metrics_name:string, metrics_value:double>>

样本值:WrappedArray([cpu,1.0000], [memory,9.8828125])

我不想硬编码位置来获取数据,例如

cpu 数据 - metrics[0].metrics_value
用于内存数据 - metrics[1].metrics_value

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:
    spark.sql("""select distinct metrics
    ,case when array_contains(metrics.metrics_name, 'cpu') == true then metrics[array_position(metrics.metrics_name, 'cpu')-1].metrics_value  end as cpu
    ,case when array_contains(metrics.metrics_name, 'memory') == true then metrics[array_position(metrics.metrics_name, 'memory')-1].metrics_value  end as memory
    FROM   
        table_name limit 10""").show(false)
    

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      相关资源
      最近更新 更多