當前位置:成語大全網 - 書法字典 - sparksql多字段連接和單字段連接的性能問題

sparksql多字段連接和單字段連接的性能問題

1的概念:streamIter和buildIter。

流遍歷表(streamIter)和查找表(buildIter)的概念見Spark SQL-Cloud+Community-Tencent Cloud(Tencent . com)的Join實現。

壹般細流是大表,bulidler是小表。

2概念:sparksql三種連接實現方法

Sort merge join:有壹個shuffle操作,適合兩個大表。

Broadcast join:將bulidler表廣播給每個執行器,因此構建器表應該更小。當sparks中默認的builder表小於10M時,使用廣播連接方式,適合大表+小表。

Hash join:默認不開啟,開啟了排序合並join,比它差不了多少。適合大桌+小桌(比廣播的小桌略大)。

3 4種連接方式

內連接:我們在編寫sql語句或者使用DataFrmae的時候,不用擔心哪個是左表,哪個是右表。在spark sql的查詢優化階段,spark會自動將大表設置為左表即streamIter,小表設置為右表即buildIter。

剩余連接是基於左表在右表中查找匹配的記錄。如果搜索失敗,將返回所有字段為空的記錄。當我們寫sql語句或使用DataFrmae時,我們通常會將大表放在左邊,小表放在右邊。

右外連接是根據右表在左表中查找匹配的記錄。如果搜索失敗,將返回所有字段都為空的記錄。因此,右表是streamIter,左表是buildIter。當我們編寫sql語句或使用DataFrmae時,我們通常將大表放在右邊,小表放在左邊。

全外連接不必關心左表和右表。