Sqoop学習の概要

1つ:sqoopの概要

  1. sqoopは、大量のデータを効率的に転送するために設計されたツールであり、通常、リレーショナルデータベースから非リレーショナルデータベースにデータを同期するために使用されます。
  2. sqoopを使用してデータをインポートおよびエクスポートします。これは基本的にMapreduceプログラムを実行し、MRの並列化とフォールトトレランスを最大限に活用します。
  3. Sqoopは増分更新をサポートし、最後にエクスポートされたデータソースに新しいレコードを追加します。

2:sqoopの使用

    MySQLデータベースのデータベース名を取得します

sqoop list-database 
-connect 'jdbc:mysql://10.1.96.xx:3306' 
-username test 
-password test

  SQLServerデータベースの特定のデータベース内のすべてのテーブルの名前を取得します

sqoop list-tables 
connect'jdbc:sqlserver://192.168.12.xx:1433;database=pems;
username=sa;password=v3pems@2020'

 sqoopは、Oracleデータベース内のデータベース内のすべてのテーブルをhiveにインポートします

sqoop import-all-tables 
-connect jdbc:oracle:thin:@10.89.142.207:1521:orcl 
-username scott -password tiger -hive-database eda 
-hive-import -create-hive-table -m 1

Sqoopを使用してSQLステートメントを実行する

sqoop eval -connect 'jdbc:sqlserver://192.168.12.65:1433;database=PEMS_DATA;
username=sa;password=V3pems@2021' -query'select count(*) from rep_energy_tar'

3:sqoopの一般的な操作コマンド

パラメータの説明を使用する

1.データのインポート:sqoopのインポート

パラメータの説明は、sqoop import--helpコマンドで表示できます。

共通パラメータ

  • --Connectは、JDBC接続文字列を指定します
  • --Connection-managerは、接続マネージャークラスの名前を指定します
  • --Connection-param-fileは、接続パラメータファイルを指定します
  • -ドライバーは、使用するJDBCドライバークラスを手動で指定します
  • --Hadoop-homeは$ HADOOP_MAPRED_HOME_ARGパラメーターをオーバーライドします
  • –hadoop-mapred-home 覆盖 $HADOOP_MAPR ED_HOME_ARG 参数
  • -印刷手順を支援する
  • --Metadata-transaction-isolation-levelメタデータクエリのトランザクション分離レベルを定義します
  • --Oracle-escaping-disabled Oracle / OraOop接続マネージャのエスケープメカニズムを無効にします
  • -Pコンソールからパスワードを読み取ります
  • -パスワードセットパスワード検証
  • --Password-alias資格情報プロバイダーのパスワードエイリアス
  • -パスワード-パスワードファイルパスでのファイルセット認証
  • -リラックス-インポートにread-uncommiアイソレーションを使用するアイソレーション
  • --Skip-dist-cachejarの分散キャッシュへのコピーをスキップします
  • --Temporary-rootdirは、インポート用の一時ルートディレクトリを定義します
  • --Throw-on-errorジョブ中にエラーが発生した場合、RuntimeExceptionを再スローします
  • -ユーザー名は認証用のユーザー名を設定します
  • -作業中に詳細情報を詳細に印刷します

インポートされた制御パラメータ

  • -追加追加モードでインポートデータを追加
  • --As-avrodatafileはデータをavroファイルストレージにインポートします
  • --As-parquetfileはデータをparquetファイルストレージにインポートします
  • --As-sequencefileは、SequenceFileファイルストレージとしてデータをインポートします
  • --As-textfileプレーンテキスト形式でデータをインポートします(デフォルト)
  • --Autoreset-to-one-mapper使用可能な分割キーがない場合は、マッパーの数を1つのマッパーにリセットします。
  • --Boundary-queryは境界クエリを設定し、主キーの最大値と最小値を取得します
  • -列<col、col、col…>は、インポートする必要のある列を指定します
  • --Compression-codecインポートに使用される圧縮コーデック
  • --Delete-target-dir削除モードでデータをインポートします(ターゲットファイルが存在する場合は、削除してからインポートします。指定されていない場合、ターゲットパスが存在する場合は、エラーが報告されます)
  • -直接使用直接インポート高速パス
  • --Direct-split-sizeダイレクトモードでインポートする場合、入力ストリームを「n」バイトで分割します
  • -e、-queryはSQL「ステートメント」の結果をインポートします
  • --Fetch-sizeさらに行が必要な場合は、データベース「n」からフェッチされる行数を設定し、インラインLOBの最大サイズを設定します
  • -m、-num-mappers n個のマップタスクを使用して並列にインポートします。デフォルトの並列処理は4です。
  • --Mapreduce-job-nameは、生成されたmapreduceジョブの名前を設定します
  • -マージ-マージされた結果のキー列に使用されるキー(増分インポート中に繰り返されるデータをマージするために使用されます)
  • --Split-byは、作業単位のテーブルの列を分割するために使用されます
  • --Split-limit日付/時刻/タイムスタンプおよび整数型の各分割列の行分割の上限。日付またはタイムスタンプフィールドの場合、秒単位で計算されます。分割制限は0より大きくする必要があります
  • --Table読み取られたテーブルの名前(インポートされるテーブル)
  • --Target-dirインポートされたテーブルがHDFSに保存されるターゲットパス
  • -検証構成されたバリデーターを使用してコピーを検証します
  • -検証-failurehandlerValidationFailureHandler完全修飾クラス名
  • --Validation-thresholdValidationThresholdの完全修飾クラス名
  • --ValidatorValidatorの完全修飾クラス名
  • --Warehouse-hdfsをインポートするためのdir親パス
  • -インポート時にWHERE条件フィルタリングを使用する場所
  • -z、-compress圧縮を有効にする

インクリメンタルインポートパラメータ

  • -チェック-増分変更をチェックするための列ソース列
  • --Incrementalは、タイプが「append」または「lastmodified」のインクリメンタルインポートを定義します
  • --Last-value列に最後にインポートされた値を段階的にチェックします

出力行のフォーマットパラメータ

  • -囲まれています-必須フィールドの囲まれた文字を設定します
  • -エスケープ-エスケープ文字を設定します
  • -フィールド-終了-フィールドセパレータの設定
  • -行末-行末文字を設定します
  • --Mysql-区切り文字MySQLのデフォルトの区切り文字セットを使用します:field:、; line:\ n;エスケープ文字:\; field delimiter: '
  • -オプションで-囲まれています-文字を含むフィールドを設定します

解析パラメータを入力します

  • -入力-囲まれています-必要なフィールドマスクを設定します
  • -入力-エスケープ-入力エスケープ文字を設定します
  • -入力フィールド-終了-入力フィールドセパレータの設定
  • -入力行-終了-入力行の終了文字を設定します
  • -入力-オプションで-囲まれています-文字を含むフィールドを設定します

Hiveパラメーター

  • --Create-hive-tableは、インポート時にHiveテーブルを自動的に作成します。ターゲットのHiveテーブルが存在する場合、失敗します。
  • --Hive-databaseハイブにインポートするときに使用するデータベース名を設定します
  • --Hive-delims-replacementは、インポートされた文字列フィールドのHiveレコード\ 0x01と行区切り文字(\ n \ r)をユーザー定義の文字列に置き換えます
  • --Hive-drop-import-delimsは、インポートされた文字列フィールドからHiveレコード\ 0x01と行区切り文字(\ n \ r)を削除します
  • --Hive-homeは$ HIVE_HOME構成パラメーターをオーバーライドします
  • --Hive-importテーブルをHiveにインポートします(区切り文字が設定されていない場合は、Hiveのデフォルトの区切り文字が使用されます)
  • --Hive-Hiveテーブルの既存のデータを上書き上書きします(上書きインポート)
  • --Hive-partition-keyハイブにインポートするときに使用するパーティションキーを設定します
  • --Hive-partition-valueハイブにインポートするときに使用するパーティション値を設定します
  • --Hive-tableハイブにインポートするときに使用するテーブル名を設定します
  • --Map-column-hive指定された列のハイブタイプへのマッピングを上書きします

 

HBaseパラメーター

  • --Column-familyは、インポートされたターゲット列ファミリーを設定します
  • --Hbase-bulkloadはHBaseの一括読み込みを有効にします
  • --Hbase-create-table指定されている場合、欠落しているHBaseテーブルを作成します
  • --Hbase-row-keyは、行キーとして使用する入力列を指定します
  • --Hbase-tableHBaseにインポートされたテーブルの名前

 

 

参照:

https://zhuanlan.zhihu.com/p/163266351

 

おすすめ

転載: blog.csdn.net/yezonghui/article/details/114869257