2016-10-11 9 views
4

データをHiveからMySQLに転送する必要があります。Hiveからsqoopエクスポートを使用するときにMySQLテーブルを上書きする方法

jdbc:mysql://mysqlserver --username username --password password --table test --columns "member_id,answer_id,answerer_id" -m 1 --export-dir /user/hive/warehouse/utils.db/test --input-fields-terminated-by \001 --lines-terminated-by \n --update-mode allowinsert 

しかし、私はこのコマンドを実行するたびに、データがテーブルに追加されるようだが、テーブルを上書きしない:ここでは

は私のsqoopコマンドです。

このsqoopコマンドを実行すると自動的にMySQLテーブルを切り捨てる方法はありますか?

+3

私はこれを行う直接的な方法はないと考えています。しかし、あなたはまだ以下のようにこれを達成することができます。 sqoop eval - 接続 '接続文字列' --quey 'TRUNCATE TABLE TABLE_NAME' sqoopエクスポート - 接続 '接続文字列' --export-dir 'HDFS_PATH' - テーブルTABLE_NAME –

答えて

3

あなたがしようとしていることは、データをアップロードするたびにテーブルを完全に更新することだと思います。通常はデータベース側で処理する必要があるものです。挿入を実行する前に、すべてのレコードを削除する必要があります。もう1つの方法は--clear-staging-tableと一緒に使用する--staging-tableパラメータで、毎回テーブルがクリアされるようにします。このシナリオでは、--tableには毎回追加されるダミーのテーブルが含まれます。設定された日時または喜んでテーブルのデータを消去するトリガーを設定することができます。私は以下のsqoopコマンドを与えました。私はステージングテーブルとして "テスト"を、メインテーブルとして "ダミー"を配置しました。

jdbc:mysql://mysqlserver --username username --password password --table dummy --columns "member_id,answer_id,answerer_id" -m 1 --export-dir /user/hive/warehouse/utils.db/test --input-fields-terminated-by \001 --lines-terminated-by \n --update-mode allowinsert --staging-table test --clear-staging-table 
+0

あなたの種類の情報は、テーブルが必要'--staging-table'のために手動で作成してください –

+0

これはばかばかしいようですが、Hiveは上書きオプションを持っています。なぜ誰かがテーブルを同期させたくないのですか? – Petro

+0

正確にここにあるものに従うのは難しい – thebluephantom

関連する問題