2

私はHadoopとそれに関連するもので何かを試しています。このために、Ubuntuマシンでhadoop、hase、hive、sqoopを構成しました。

raghu@system4:~/sqoop$ bin/sqoop-import --connect jdbc:mysql://localhost:3306/mysql --username root --password password --table user --hive-import -m 1

すべてうまくいきますが、ハイブコマンドラインに入ってshowtablesを実行しても何もありません。これらのテーブルがHDFSで作成されていることがわかります。

Sqoopインポートでいくつかのオプションを見てきました-Hive/HDFS/HBaseにインポートできます。Hiveにインポートする場合、実際にはHDFSに直接インポートしています。では、なぜハイブなのか?

データを確認するためにHiveQLをどこで実行できますか。

cloudera Supportから、色相を確認できることがわかりました。しかし、HueはHiveへの単なるユーザーインターフェイスだと思います。

誰かがここで私を助けてくれませんか。

前もって感謝します、

ラグー

4

7 に答える 7

2

sqoop からの出力を投稿できますか? --verbose オプションを使用してみてください。

これは私が使用するコマンドの例で、Hive テーブルに直接インポートします。

sqoop import --hive-overwrite --hive-drop-import-delims --warehouse-dir "/warehouse" --hive-table hive_users --connect jdbc:mysql://$MYSQL_HOST/$DATABASE_NAME --table users --username $MYSQL_USER --password $MYSQL_PASS --hive-import
于 2012-12-27T03:17:23.943 に答える
2

私は同じ問題を抱えていました。データを HDFS に直接インポートしてから、HDFS の特定の場所を指す外部Hive テーブルを作成することで、回避/回避することができました。ここに私のために働く例があります。

create external table test (
    sequencenumber int,
    recordkey int,
    linenumber int,
    type string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
    location '/user/hdfs/testdata';

HDFS でデータを保存した場所に場所を変更する必要があります。

于 2012-05-01T17:51:38.120 に答える
0

毎回 Hive テーブルを作成する代わりに、sqoop の create-hive-table コマンドを使用して、Hive にテーブル構造をインポートできます。テーブルを managed_table としてインポートし、テーブルのプロパティを外部テーブルに変更してからパーティションを追加することで、そのテーブルを外部テーブルに変換できます。これにより、適切なデータ型を見つける労力が軽減されます。精度が変わりますのでご注意ください

于 2014-03-26T16:18:15.263 に答える
0

使用しているコマンドは、データを $HIVE_HOME ディレクトリにインポートします。HIVE_HOME 環境変数が設定されていないか、間違ったディレクトリを指している場合、インポートされたテーブルを表示できません。

Hive ホーム ディレクトリを見つける最善の方法は、Hive QL SET コマンドを使用することです。

hive -S -e 'SET' | grep warehouse.dir

ハイブのホーム ディレクトリを取得したら--hive-home <hive-home-dir>、コマンドにオプションを追加します。

別の理由として考えられるのは、一部の Hive セットアップではメタデータがキャッシュされ、変更をすぐに確認できないことです。この場合、INVALIDATE METADATA;コマンドを使用してメタデータ キャッシュをフラッシュする必要があります。

于 2016-12-24T20:40:02.303 に答える
0

このようなsqoopコマンドを試してみてください。これは私のために機能し、ハイブテーブルを直接作成します。毎回外部テーブルを作成する必要はありません

sqoop import --connect DB_HOST --username ***** --password ***** --query "select *from SCHEMA.TABLE where \$CONDITIONS"
--num-mappers 5 --split-by PRIMARY_KEY - -hive-import --hive-table HIVE_DB.HIVE_TABLE_NAME --target-dir SOME_DIR_NAME;

于 2015-09-08T13:13:21.443 に答える
0

Hive インポート オプションで Sqoop を使用している場合、sqoop は対応するデータベースのメタストアに直接接続し、対応するテーブルのメタデータ (テーブルのスキーマ) を取得するため、Hive でテーブル構造を作成する必要はありません。このスキーマその後、Hive-import オプションとともに使用すると、Hive に提供されます。

したがって、HDFS 上のすべての sqoop データの出力は、デフォルトでデフォルト ディレクトリに保存されます。つまり、/user/sqoop/tablename/part-m ファイルです。

ハイブ インポート オプションを使用すると、テーブルはデフォルトのウェアハウス ディレクトリに直接ダウンロードされます。

/user/hive/warehouse/tablename コマンド: sudo -u hdfs hadoop fs -R /user/ これにより、ユーザー内のすべてのファイルが再帰的に一覧表示されます。

ここで、Hive に移動し、「show databases.」と入力します。デフォルト データベースしかない場合は、「show tables」と入力します。OK は一般的なデフォルト システム出力であり、コマンド出力の一部ではないことに注意してください。

ハイブ > データベースを表示します。

わかった

デフォルト

かかった時間: 0.172 秒

ハイブ > テーブルを表示します。

わかった

ジャンル

ログ_Apache

映画

映画のジャンル

映画化

職業

ユーザー

かかった時間: 0.111 秒

于 2014-08-13T15:43:49.257 に答える