MySQLからHiveにさらにデータをインポートするためのソリューション

MySQLからHiveにさらにデータをインポートするためのソリューション

元の派生コマンド:

bin/sqoop インポート -connect jdbc:mysql://192.168.169.128:3306/yubei -username root -password 123456 -table yl_city_mgr_evt_info --split-by rec_id -m 4 --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --hive-overwrite -create-hive-table -delete-target-dir -hive-database default -hive-table yl_city_mgr_evt_info

原因分析: MySQL フィールドに '\n' などの区切り文字が含まれている可能性があります。Hive にインポートすると、デフォルトで 'n' が改行文字として使用され、Hive にレコードが多くなります。

解決:

データをインポートするときに、--hive-drop-import-delims オプションを追加して、フィールド内の \n、\r、および \01 を削除します。

最終導関数コマンド:

bin/sqoop インポート -connect jdbc:mysql://192.168.169.128:3306/yubei -username root -password 123456 -table yl_city_mgr_evt_info --split-by rec_id -m 4 --hive-drop-import-delims --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --hive-overwrite -create-hive-table -delete-target-dir -hive-database default -hive-table yl_city_mgr_evt_info

公式ドキュメントを参照してください: https://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html

補足: Sqoop から Hive に MySQL データをインポートする際に遭遇する落とし穴

1.sqoopをHDFSにインポートする

1.1 sqoopジョブを実行すると、最後の値が自動的に更新されます

# sqoop 増分インポート スクリプト bin/sqoop ジョブ --create sqoop_hdfs_test02 --import \
--connect jdbc:mysql://localhost:3306/pactera_test \
--ユーザー名 ルート \
--パスワード 123456 \
--テーブル学生\
--target-dir /user/sqoop/test002/ \
--fields-terminated-by "\t" \
--check-column 最終更新日 \
--増分最終変更日 \
--last-value "2018-12-12 00:03:00" \
--追加

注: --append パラメータは必須です。指定しないと、ジョブを 2 回目に実行するときに次のようにエラーが報告されます。

この時点で、sqoop ジョブが構築されました。

2.Hiveはテーブルを作成し、sqoopによってインポートされたデータを読み取ります。

存在しない場合は外部テーブルを作成します student_hive (SId int、Sname string、Sage string、Ssex string、last_modified Timestamp) 
行形式の区切りフィールドは '\t' で終了し、場所は 'hdfs://node01:8020/user/sqoop/test002/' です。

注意: hive の時間形式はタイムスタンプです。日付に設定すると、DB データを正常に読み込むことができません。

最初のフル ロードが完了し、ルート全体が完全に正常になり、Hive テーブルでデータをクエリできるようになりました。

-----------------------キー分割線-----------------------

* sqoop lastmodified 形式での増分ロードでは、最終値がジョブ実行のシステム時間として保存されます。テスト データベースのチェック列が現在のシステム時間 (つまり、前のジョブの最終値) より小さい場合、データはロードされません。

SId=6 の場合は読み込まれないので、データテストのために今日の時間 (2018-12-26 17:05) に変更すると、データが正常に読み込まれます。よっほー! !

要約:

sqoop増分インポートにlastmodified形式を使用する場合、

1. --append の使用に注意してください。

2. 最後の値は、ジョブが実行されたときのシステム時間です。データをテストするときは、データが正確で、自動的に増加することを確認してください。

3. すべてには固定番号があります。情報を確認し、システムで発生した問題を正確に特定します。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • MySQLにデータを素早くインポートする方法
  • MySQL 4 データをインポートする方法
  • Navicat を使用して MySQL データベースをエクスポートおよびインポートする方法
  • JavaはMYSQL LOAD DATA LOCAL INFILEを使用して大量のデータをMySQLにインポートします。
  • MySQL コマンドラインのエクスポートとデータベースインスタンスのインポートの詳細な説明
  • Wampserver で MySQL データベースをインポートする手順
  • MySQL コマンドラインによるデータベースのエクスポートとインポート
  • mysqldump を使用してデータをインポートし、mysqldump 増分バックアップを実行します (mysqldump の使用方法)
  • MYSQLにデータをインポートするいくつかの方法
  • php.ini を変更して、Mysql インポート データベース ファイルの変更方法の最大制限を実装します。
  • .Net Core を使用して数千万のデータを MySQL にインポートする手順

<<:  データ型の判断における js typeof と instanceof の違いと、その開発と使用について

>>:  docker に nacos をインストールしてデータベースを構成する詳細なチュートリアル

推薦する

Reactは動的ポップアップウィンドウコンポーネントを実装します

UI コンポーネントを作成するときに、アニメーションを考慮しなければ、アニメーションを実現するのは非...

2013年のウェブデザインUIの最もホットなトレンド最も人気のあるUIデザイン

時は経つのが早く、わずか 6 日後には 2013 年が歴史になります。今年は、いわゆるトレンドが多す...

formData 形式タイプを使用してファイルをアップロードする Vue の例

Vue では、一般的にフロントエンドとバックエンドを分離したプロジェクトがあり、データ操作を実装する...

MYSQLはUnionを使用して2つのテーブルのデータを結合し、表示します。

UNION演算子の使用union : 2 つ以上の SELECT ステートメントの結果を 1 つの...

Vue要素はテーブルの追加、削除、データの変更を実装します

この記事では、テーブル内のデータを追加、削除、変更するためのvue要素の具体的なコードを参考までに共...

音声キューイングシステムを実装するためのJavaScript

目次導入主な特徴エフェクト表示キーコード導入音声キューイングシステムは、銀行、レストラン、病院などの...

JavaScript のフラット配列をツリー構造に変換する例

目次バックグラウンドで10,000個のデータが失われた再帰法非再帰的方法要約するバックグラウンドで1...

MySQLインデックスの作成について知っておくべきこと

目次序文: 1. インデックスメソッドを作成する2. インデックスを作成するために必要な権限序文: ...

Windows 10 での MySQL 8.0 のダウンロードとインストール構成のグラフィック チュートリアル

この記事では、MySQL 8.0のダウンロードとインストールについてご紹介します。具体的な内容は以下...

シャドウソックスを使用してLAN透過ゲートウェイを構築する

目次dnsmasq をインストールして設定するChinaDNS をインストールして設定するshado...

qt.qpa.plugin の問題を解決: Ubuntu 18.04 の Qt で Qt プラットフォーム プラグイン「xcb」をロードできませんでした

問題の説明Qt5.15.0 をインストールした後、テスト ケースを実行するとエラーが表示されます。 ...

MySQL レプリケーションの原理と実際のアプリケーションの詳細な説明

この記事では、例を使用して、MySQL レプリケーションの原理と実際のアプリケーションについて説明し...

CSS クロスブラウザ スタイルのバグのデバッグについて

まず最初に、適切なブラウザを選択します。私が Chrome を選択したのは、その強力なデバッグ ツー...

キャンバスでPS消しゴムスクラッチカードの効果を実現するためのJSの使用方法の詳細な説明

目次効果のデモンストレーション:メインJSコード実装 <div class="box...

MySQL でデータをクエリし、条件に基づいて別のテーブルに更新する方法の例

この記事では、MySQL が条件に基づいてデータをクエリし、別のテーブルに更新する方法を例を使用して...