Hive新規パーティション異常処理:FAILED:Execution Error,return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.

1746 ワード

今日hive関連文をテストしたとき、私がパーティションを作成したとき、突然異常が発生しました.FAILED:Execution Error,return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. これは私に少し突然防げなくて、結局以前出会ったことがなくて、そこで私はネット上で解決方法を求めて、同じく天涯に落ちた人です.
方法1:Mysql-connect jarパッケージのバージョンを下げて、それを5.1.27に下げて、私はちょうど5.1.38を使っています.彼の言う原理が分からないが、結局彼は成功して、やってみて、やっと相応のjarパッケージを見つけて、胸いっぱいにサービスプログラムを起動します....間違え続けて、慣れました、PASS.方法2:hive-site.xmlのhive.metastore.schema.verificationプロパティはtrueに設定され、デフォルトではfalseです.試してみましたが、相変わらずだめです.PASS.方法3:MySQLでhiveのcharacter_を変更するset_Databaseの符号化フォーマットをlatin 1に変更します.前に異常があったのを覚えています.調べてみましたが、やはり大丈夫です.この方法もだめだと思っていたが、その後多くの投稿を見て、何度も試してみたが、最終的にこの方法が問題を解決できることに気づいたが、操作過程はネット上で言うほど簡単ではなく、一定の操作手順が必要だ.
以下は私がまとめた正しい操作手順です.
  • Hiveサービスプロセスを閉じる閉じなければ、その後の操作の効果はほとんど実現できず、異常な問題を解決できない.exit; -> hive操作インタフェースCtrl+Cを終了する(2つのキーを一緒に押して、終了できない場合は何度も押す)->hiveプロセスを終了する(以上の操作は異なるXshellインタフェースであるべき)
  • MySQLデータベースにアクセスし、hiveデータベース
    mysql -u root -p
    // 
    drop database hive;
    
    を削除する操作が完了すると、インタフェースはMySQLデータベースを保持し、また新しいリンクウィンドウは次の操作
  • を実行する.
  • Hiveのデータベースを再初期化
    schematool -dbType mysql -initSchema
    
    初期化すると、MySQLに新しいhiveデータベースが自動的にロードされます.
  • MySQLインタフェースに戻り、Hiveデータベースに入り、符号化フォーマット
    use hive;
    alter database hive character set latin1;
    #  character_set_database   latin1; , 。
    show variables like '%char%'; 
    #  MySQL  , ;
    exit;
    
  • を変更する.
  • Hiveプロセス
    hive --service metastore
    # , 
    
  • を再起動する.
  • 別のウィンドウを開き、Hiveに入ると、以前に新規作成したデータベースとテーブルがHDFSに保存されていることに気づきましたが、新規作成したhiveにはこれらのデータはなく、すべてのデータが新規作成されます.しかし、私は奇妙なことに気づきました.新しいデータベースとデータテーブルと前に建てられたデータベースとテーブルが重複すれば、新しいデータは古いデータを上書きします.もし誰かが知っているなら、これはなぜか、コメントエリアで議論することができます.皆さん、ありがとうございました.みんなが迅速に問題を解決することを望んでいます.