2016-10-24 9 views
0

私はOracleからSqoopを使ってHiveにテーブルをインポートしようとしています。私は、次のコマンドを使用:Sqoopのインポートに失敗する

sqoop-import --connect jdbc:<connection> --table test1 --username test --password test --hive-table hive_test --create-hive-table --hive-import -m 1  

をしかし、これはだから私は多くのフォーラムでは、オンラインで読み、それは私がディレクトリを削除して、再度コマンドを実行しなければならないと述べた私のエラー

Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory <hdfs path> already exists 

を与えます。 私はそれを正確に行いましたが、私はまだエラーが発生し続けています。

+0

テーブルは既に存在しますか?もしそうなら、--hive-overwriteを使う必要があります。 –

+0

テーブルが存在しないので、--create-hive-tableを使用しています。 – anonymous

答えて

2

あなたはSqoopハイブインポートの作業を理解する必要があります。

  • インポートデータHDFS <some-dir>
  • しないが、テーブル<some-table>

  • LOADデータINPATH '<some-dir>' を存在する場合は、ステップ1

    でエラーを取得しているハイブテーブルに<some-table>を作成します。
    Output directory <hdfs path> already exists 
    

    これを削除とし、次に進みます。

    良い方法:

    毎回これを手動で削除する必要はありません。

    コマンドに--delete-target-dirを使用してください。それは

    P.S.が存在する場合は

    は、インポート先のディレクトリを削除します--create-hive-table--hive-importを使用する必要はありません。 --hive-importデフォルトでテーブルを作成します。

  • +0

    完全に働いてくれてありがと... – anonymous

    0

    ハイブは、ディレクトリとして、テーブル名でHDFSにハイブ倉庫内のテーブルデータを記憶し、通常経路

    /ユーザ/ハイブ/倉庫/

    は、テーブル名のディレクトリを削除する必要が下に有します。

    hadoop fs -rmr /user/hive/warehouse/hive_test 
    
    関連する問題