我在配置單元中的每個分區有900萬條記錄,我有兩個分區。該表有20列。現在我想根據id列來比較分區之間的數據集。這是考慮到自我加入900萬條記錄會造成性能問題的最佳方式。比較配置單元中的兩個分區的數據
0
A
回答
0
你可以嘗試SMB連接 - 它主要就像合併兩個排序列表。但是在這種情況下,您需要創建兩個表。
另一種選擇是編寫一個UDF來做同樣的事情 - 那就是項目本身。第一種選擇更容易。
0
你嘗試過自我加入並讓它失敗?只要您正確指定連接條件,我認爲它不應該成爲問題。對於Hive來說,9百萬行其實並不多。它可以通過使用連接條件作爲縮減鍵來處理大型連接,因此它實際上並不是完整的笛卡兒積。
select a.foo, b.foo
from my_table a
full outer join my_table b
on a.id <=> b.id
where a.partition = 'x' and b.partition = 'y'
0
要做到2個表(或比較2個分區同桌)進行全面的比較,我的經驗告訴我,使用一些校驗機制是一個更有效和可靠的解決方案比連接表(可提供性能問題,如你所提到的,並且在例如鍵被重複時也給出一些困難)。
你可以看看這個處理Hive表的比較(比較所有行和所有列)的Python程序,並會在網頁中顯示可能出現的差異:https://github.com/bolcom/hive_compared_bq。
在你的情況下,你會使用該程序指定「2表比較」是相同的,並使用「--source-where」和「--destination-where」來指示你想要的分區比較。 「 - group-by-column」選項可能對指定「id」列也很有用。
相關問題
- 1. Apache配置單元:比較兩個表之間的數據並生成報告
- 2. 配置單元 - 表之間的數據比較
- 3. 將分區數據插入到分區配置單元表
- 4. 比較兩個數組中的元素
- 5. 配置單元中的分區表
- 6. 配置單元中的分區表
- 7. 比較matlab中的兩個單元格數組元素
- 8. 如何比較兩個數據表格的單元格值
- 9. 配置單元分區和分區
- 10. 配置單元中的分區和分區有什麼區別?
- 11. 比較兩個數據表中的c#
- 12. 比較SQL中的兩個數據集
- 13. 比較兩個表中的數據
- 14. 兩個文件中的數據比較
- 15. 比較Pig中的兩個數據集
- 16. 比較SSRS中的兩個數據集
- 17. 查詢多個分區配置單元?
- 18. 配置單元日期比較
- 19. Excel VBA比較動態單元格區域中的兩行
- 20. 比較兩個數組的匹配值
- 21. 百分比的配置單元計算
- 22. 將分區添加到不帶數據的配置單元表
- 23. 比較兩個數據庫
- 24. 比較兩個數據集
- 25. 比較兩個數據行
- 26. 比較兩個數據表
- 27. 比較的兩個數組PHP元素
- 28. Python:比較兩個數組的元素
- 29. 比較匹配和非匹配的兩個數據集
- 30. 在excel中比較兩個單元格並返回匹配的字符數
在兩個分區中你有相同的ID嗎?我沒有自己加入9m記錄是蜂巢問題... – 2014-09-01 10:39:33