我们使用spark的sqlapi来执行查询 Hive
群集上的表。我怎样才能执行 REPARTITION
在sql api?中查询的列上?。请注意,我们不使用dataframeapi,而是使用sqlapi(例如 SELECT * from table WHERE col = 1
).
我知道pysparksql在 Dataframe API
.
但是,我想知道指定 REPARTITION
(在特定列上)通过sql api(通过select语句)在sql查询中。
考虑以下查询:
select a.x, b.y
from a
JOIN b
on a.id = b.id
感谢您的帮助。
我们使用spark 2.4
谢谢
2条答案
按热度按时间iqjalb3h1#
您可以提供提示以在sparksql中启用重分区
nxowjjhe2#
两者都可以使用,但使用%sql时,请使用手册中的:
基于一组表达式重新划分关系中的行。具有相同表达式值的行将散列到同一个辅助进程。不能将此与order by或cluster by一起使用。
一切都是一样的。i、 洗牌发生,也就是说,你不能消除它,只是替代接口。当然,只有“懒惰”的评估才有可能。
这是%sql方法中根据其他答案提示的替代方法。