部分场景下,我们可能希望从一个大表 unparsed
中抽取前100行并对这些行应用UDF,一种容易想到的SQL语句如下:
sql
@pyspark
insert into table parsed
select url, parse_func(content) as parsed_content from unparsed
limit 100;
但这个语句实际上会对 unparsed
中的所有行先应用UDF然后再抽取前100行,不符合我们的期望,为此可以作出如下修改
sql
@pyspark
insert into table parsed
select url, parse_func(content) as parsed_content
from (
select url, content from unparsed
limit 100
);
注意,以下这种语句是无效的,速度并不会有任何改变:
sql
@pyspark
insert into table parsed
(select url, parse_func(content) as parsed_content from unparsed limit 100);