spark sql“极限”

whlutmcx  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(270)

env:spark1.6使用hadoop。hortonworks数据平台2.5
我有一个有100亿条记录的表,我想得到3亿条记录并将它们移到一个临时表中。

sqlContext.sql("select ....from my_table limit 300000000").repartition(50)
.write.saveAsTable("temporary_table")

我看到limit关键字实际上会使spark只使用一个executor!!!这意味着将3亿条记录移动到一个节点,并将其写回hadoop。我如何才能避免这种减少,但仍然得到只有3亿记录,而有一个以上的执行者。我想所有的节点都写进hadoop。
取样能帮我吗?如果是,怎么办?

oknwwptz

oknwwptz1#

取样方法如下:

select ....from my_table TABLESAMPLE(.3 PERCENT)

select ....from my_table TABLESAMPLE(30M ROWS)

相关问题