小编dim*_*ser的帖子

火花内联与。横向视图爆炸差异?

在 Spark 中,对于以下用例,我想了解使用INLINEEXPLODE之间的主要区别是什么......我不确定是否有任何性能影响,或者一种方法是否优于另一种方法或者如果有任何其他用例,其中一个合适而另一个不合适......

用例是从复杂数据类型(结构数组)中选择 2 个字段,我的直觉是使用 INLINE,因为它会分解结构数组

例如:

WITH sample AS (
 SELECT 1 AS id,
        array(NAMED_STRUCT('name', 'frank',
                           'age', 40,
                           'state', 'Texas'
                           ),
              NAMED_STRUCT('name', 'maria',
                           'age', 51,
                           'state', 'Georgia'
                           )
              )            
            AS array_of_structs
),

inline_data AS (
SELECT id,
        INLINE(array_of_structs)
FROM sample
)

SELECT id,
        name AS person_name,
        age AS person_age
FROM inline_data
Run Code Online (Sandbox Code Playgroud)

并使用横向视图爆炸:

WITH sample AS (
 SELECT 1 AS id,
        array(NAMED_STRUCT('name', 'frank',
                           'age', 40,
                           'state', 'Texas'
                           ),
              NAMED_STRUCT('name', 'maria',
                           'age', 51,
                           'state', 'Georgia' …
Run Code Online (Sandbox Code Playgroud)

sql arrays explode hiveql apache-spark

5
推荐指数
1
解决办法
1852
查看次数

标签 统计

apache-spark ×1

arrays ×1

explode ×1

hiveql ×1

sql ×1