【hive】hiveテーブルが大きい場合はエラーメッセージを検索

1799 ワード

オンラインhiveの使用環境に奇妙な問題が発生し、しばらく走ると次のエラーが表示されます.
FAILED: SemanticException MetaException(message:Exception thrown when executing query : SELECT A0.PART_NAME,A0.PART_NAME AS NUCORDER0 FROM PARTITIONS A0 LEFT OUTER JOIN TBLS B0 ON A0.TBL_ID = B0.TBL_ID LEFT OUTER JOIN DBS C0 ON B0.DB_ID = C0.DB_ID WHERE C0.`NAME` = ? AND B0.TBL_NAME = ? ORDER BY NUCORDER0)
そして、しばらく待つと実行可能になります.
     逐次問題の位置付け(各クエリーを分割)を経て、1つの特大テーブル(1時間あたり約80 G程度のデータ、ピーク時間帯がより大きい)のクエリーに起因することが分かった.クエリには次の文があります.
where (cast(if(length(hour)<2, concat(day,'\''0'\'',hour), concat(day,hour)) as INT) between 2017101006 and 2017101017

    スライドタイムウィンドウの数時間のデータクエリーを実現することを目的としており、天をまたぐ存在があるため、上と同じように書かれています.しかし、このように書くのは特大時計では実際にはだめで、パーティションは使われていません.
問題が見つかりました.解決策は次のとおりです.
1.クエリーの要求に対して、表を再設計して、日と時間によって一緒にパーティション化して、新しいパーティションday_time.
2.新しいテーブルで直接問い合わせるときにday_を使うtime between  2017101006 and 2017101017問い合わせ
3.その後の観察では、上記のようなエラーは報告されていないことがわかりました.
 
転載先:https://www.cnblogs.com/accipiter/p/7685919.html