首页 > 解决方案 > 如何在 spark-sql 中从 UDF 中删除空行?

问题描述

我有以下 sql,它调用可以返回空行的 UDF。在我继续使用取决于第一个输出的第二个 UDF 之前,我想删除所有空行,这样第二个 UDF 就不必为此做任何工作。

CREATE TEMPORARY VIEW temp_table
AS
SELECT udf1(some_column)
FROM input_table;

// want to drop null rows in temp_table here, or have the first block already filter out nulls

SELECT output_string.some_column
FROM
(SELECT udf2(*) AS output_string FROM temp_table);

我不太确定从哪里开始,因为我从阅读中看到您可以根据列值删除空值,例如select when 'some_column' IS NOT NULL但我没有列名可以处理?

是这样的吗,我可以在其中过滤所有不为空的列,temp_table因为UDF中只有1个?

...udf1

SELECT output_string.some_column
FROM
(SELECT udf2(*) AS output_string FROM temp_table WHERE all of temp_tables columns is not null)

但这似乎不起作用,因为 UDF 列名是动态的,取决于输入......例如

UDF:udf1(DYNAMIC INPUT)

标签: apache-spark-sql

解决方案


推荐阅读