1

hadoop、hive(CDHバージョン)をインストールした後、実行します

./sqoop import -connect jdbc:mysql://10.164.11.204/server -username root -password password -table user -hive-import --hive-home /opt/hive/

すべてうまくいきますが、ハイブコマンドラインに入ってshowtablesを実行しても何もありません。./hadoop fs -lsを使用すると、/ user /(username)/userが存在することがわかります。

どんな助けでも大歓迎です。

- -編集 - - - - - -

/sqoop import -connect jdbc:mysql://10.164.11.204/server -username root -password password -table user -hive-import --target-dir /user/hive/warehouse

次の理由でインポートが失敗します:

11/07/02 00:40:00 INFO hive.HiveImport: FAILED: Error in semantic analysis: line 2:17 Invalid Path 'hdfs://hadoop1:9000/user/ubuntu/user': No files matching path hdfs://hadoop1:9000/user/ubuntu/user
11/07/02 00:40:00 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 10
        at com.cloudera.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:326)
        at com.cloudera.sqoop.hive.HiveImport.executeScript(HiveImport.java:276)
        at com.cloudera.sqoop.hive.HiveImport.importTable(HiveImport.java:218)
        at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:362)
        at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:423)
        at com.cloudera.sqoop.Sqoop.run(Sqoop.java:144)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
        at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:180)
        at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:218)
        at com.cloudera.sqoop.Sqoop.main(Sqoop.java:228)
4

7 に答える 7

3

プロパティ javax.jdo.option.ConnectionURL の値については、hive-site.xml を確認してください。これを明示的に定義しない場合、デフォルト値は、プロセスをどこから起動するかによって異なる、Hive メタストア (jdbc:derby:;databaseName=metastore_db;create=true) の作成に相対パスを使用します。これは、show tables を介してテーブルを表示できない理由を説明しています。

絶対パスを使用して hive-site.xml でこのプロパティ値を定義します

于 2013-02-19T05:11:28.607 に答える
2

ハイブでテーブルを作成する必要はありません..以下のクエリを参照してください

sqoop import --connect jdbc:mysql://xxxx.com/Database name --username root --password admin --table tablename (mysql table) --direct -m 1 --hive-import --create-hive-table --hive-table table name --target-dir '/user/hive/warehouse/Tablename(which u want create in hive)' --fields-terminated-by '\t'
于 2015-02-03T07:35:43.590 に答える
1

私の場合、Hive はデータ/user/hive/warehouseを HDFS のディレクトリに保存します。これは、Sqoop が配置する場所です。

だから私はあなたが追加する必要があると思います:

--target-dir /user/hive/warehouse

Hive テーブルのデフォルトの場所はどれですか (ケースによっては異なる場合があります)。

Hive で次のテーブルを作成することもできます。

sqoop create-hive-table --connect jdbc:mysql://host/database --table tableName --username user --password password
于 2011-07-01T15:37:13.987 に答える
0

Hive テーブルは、Sqoop インポート プロセスによって作成されます。/user/hive/warehouse が HDFS に作成されていることを確認してください。HDFS を参照できます (http://localhost:50070/dfshealth.jsp - [ファイル システムの参照] オプション。

また、sqoop import コマンドの -target dir に HDFS ローカル、つまり hdfs://:9000/user/hive/warehouse を含めます。

于 2011-07-22T09:22:12.300 に答える
0

必要なのは、データが移動するハイブ テーブルを指定することだけだと思います。"--hive-table database.tablename"sqoop コマンドに追加し、 --hive-home /opt/hive/. それで問題が解決するはずだと思います。

于 2016-05-06T13:05:12.780 に答える
0

まず、mysql と同じように正確なフィールド名とタイプを使用して、Hive でテーブル定義を作成します。

次に、インポート操作を実行します

ハイブインポートの場合

sqoop import --verbose --fields-terminated-by ','  --connect jdbc:mysql://localhost/test --table tablename --hive-import --warehouse-dir /user/hive/warehouse --fields-terminated-by ',' --split-by id --hive-table tablename
  • 「id」は、既存のテーブルの主キーにすることができます
  • 「localhost」はローカル IP にすることができます
  • 「テスト」はデータベースです
  • 「倉庫」ディレクトリは HDFS にあります
于 2012-01-20T09:06:20.633 に答える