2016-06-18 15 views
0

今日、私はハイブチューニングについて記事を1つ読んだ。 1つのパラグラフは次のとおりです:異なるデータタイプに関連するデータスキュー

シーン:ユーザテーブルのuser_idフィールドuser_id INT、ログテーブルの両方のタイプの文字列型int。 user_id Join操作に従って2つのテーブルが作成されると、デフォルトのハッシュ操作にint idが割り当てられます。これにより、リデューサに割り当てられた文字列型IDのすべてのレコードが生成されます。

ソリューション:誰が私に上記の意見についてのいくつかのより詳細な説明を与えることができ、数値型が文字列型

select * from users a 
left outer join logs b 
on a.usr_id = cast (b. user_id as string) 

に変換されて、私は本当に著者は説明する言葉を理解することはできません。なぜ "これは減速機に割り当てられた文字列型IDのすべてのレコードを引き起こすのですか?"起こりました?前もって感謝します!

答えて

0

最初は正しくコピーして貼り付け/転写しませんでした。これは 単一減速機に割り当てられた文字列型IDのすべてのレコードを引き起こします

:ここでは可能性が高い表現です。

どうなる理由はcastなしをintへの文字列の変換は、おそらくにそれを回しているということです。したがって、ハッシングはすべてのIDを0の値の同じパーティションに入れます。

関連する問題