在 Spark 中,对于以下用例,我想了解使用INLINE和EXPLODE之间的主要区别是什么......我不确定是否有任何性能影响,或者一种方法是否优于另一种方法或者如果有任何其他用例,其中一个合适而另一个不合适......
用例是从复杂数据类型(结构数组)中选择 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)