2016-07-29 12 views
1

retail_dbデータベーステーブルを既に作成したハイブデータベースにコピーしようとしています。私はその後、Clouderaの中に、なぜ既存のファイルが発生し、データベースをハイブにテーブルをコピーしようとしていますsqoopを使用してHiveにインポート中にファイルを取得中にエラーが発生しました

ERROR tool.ImportAllTablesTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://quickstart.cloudera:8020/user/cloudera/categories already exists

:私は次のコード

sqoop import-all-tables \ 
--num-mappers 1 \ 
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \ 
--username=retail_dba \ 
--password=cloudera \ 
--hive-import \ 
--hive-overwrite \ 
--create-hive-table \ 
--outdir java_files \ 
--hive-database retail_stage 

を実行するとマイマップ-減らすジョブは次のエラーで停止します問題。このエラーを無視するか、既存のファイルを上書きする方法はありますか?

答えて

3

これはsqoop輸入ジョブがどのように動作するかです:

  • sqoopは、ユーザのホームディレクトリ(お使いの場合には、それは/user/clouderaである)であるtmp DIR(01​​)で/輸入データを作成します。

  • は、その実際のハイブの位置(すなわち、/user/hive/wearhouseにデータをコピーする。

  • このcategories DIRはあなたがimport文を実行する前に。そのためディレクトリを削除したり、その重要な場合は、名前を変更存在している必要があります。

hadoop fs -rmr /user/cloudera/categories

OR

hadoop fs -mv /user/cloudera/categories /user/cloudera/categories_1

とsqoopコマンドを再実行してください!中継場所とsqoopは(sucessfully)コピー後ディレクトリ/user/cloudera/categoriesステージング削除として

だから要するに、Hiveにインポートすると、実際のHDFSの場所にHDFSを使用します - ステージング/ tmpのファイルをクリーンアップするためにsqoopジョブの最終段階である - ので、 tmpステージングディレクトリを指定しようとすると、そのディレクトリは見つかりません。

インポートが成功した後:hadoop fs -ls /user/cloudera/categories - ディレクトリは存在しません。

2

Sqoopハイブへの輸入は3つの段階で動作します:

ハイブ表へ

  • ロードデータが存在するではないあなたが言及していない場合

    • 入れデータHDFS
    • には、ハイブテーブルを作成します。 --target-dirまたは--warehouse-dirですので、私はあなたのケースでは/user/cloudera/と思うHDFSホームディレクトリにデータを配置します。

      今度はMySQLテーブルcategoriesの方が先にインポートされている可能性があります。したがって、/user/cloudera/categoriesディレクトリが存在し、この例外が発生しています。

      --taget-dirの存在しないディレクトリを--taget-dir /user/cloudera/mysqldataのように追加します。 sqoopは上記のコマンドでインポートされたすべてのMysqlテーブルをこの場所に配置します。

  • 0

    hive-importhive-overwriteは同時に使用できません。

    この問題を確認したバージョンは次のとおりです。

    $ sqoop help import 
    

    --hive-overwrite Overwrite existing data in the Hive table

    $ sqoop version 
    

    Sqoop 1.4.6-cdh5.13.0

    参照。 https://stackoverflow.com/a/22407835/927387

    関連する問題