Sqoopインポートエクスポート機能の紹介


Sqoopは、リレーショナルデータベース(MySQL/Postgresql)とHDFS(Hive/HDFSファイル)とが相互作用するツールである.
Sqoop importは、リレーショナルデータベースからHDFSベースのデータベースにインポートする.
Sqoop exportは、HDFSベースのデータベースからリレーショナルデータベースにエクスポートする.
Note:Sqoop exportはHDFSファイルを直接エクスポートする.パーティションテーブルを作成する場合、各パーティションテーブルには対応するHDFSファイルがあり、各ファイルは1回エクスポートする.
PostgresqlからHiveをインポートするDemoを挙げます.
sqoop import \
"-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect jdbc:postgresql://192.168.0.222:5432/ocm?currentSchema=sftm_km \
--username postgres \
--password password \
--table dmsdatasearch_v1_getdmssalesorderinfos_head \
--hive-database ods_sftm \
--hive-table ods_orders_dt_head \
--hive-import \
--fields-terminated-by '\001' \
--hive-drop-import-delims  \
--lines-terminated-by '
' \ --delete-target-dir \ -- -Dorg.apache.sqoop.splitter.allow_text_splitter=true \ --split-by split_id \ -m 5

PostgresqlからHiveをインポートするDemoを挙げます.
sqoop export \
--connect jdbc:postgresql://192.168.0.222:5432/ocm?currentSchema=sftm_km \
--username postgres \
--password password \
--table order_dt_head \
--export-dir "hdfs://namenode.gaialab.ai:8020/warehouse/tablespace/managed/hive/ods_sftm.db/ods_orders_dt_head_tmp/*" \
--input-fields-terminated-by '\001' \
--lines-terminated-by '
' \ --input-null-string '\\N' \ --input-null-non-string '\\N' \ -m 5

sqoop共通コマンド:
コマンド#コマンド#
説明
--connect
接続文字列
--help
show各コマンドの意味
--password
データベースのパスワード
--username
データベースアカウント
--delete-target-dir 
データをインポートする前にターゲットパスを削除
-e,--query
sql文でインポートするデータを指定できます
-m,--num-mappers
インポートを実行する複数のタスクを並列に実行
--split-by
-m>1の場合は、インポート用にカラムを指定する必要があります.
--table
インポートするテーブル
--target-dir
ターゲットパス
--check-column
Source column to check for incremental change(インクリメンタルインポート関連)
--incremental
Define an incremental import of type'append'or'lastmodified'(インクリメンタルインポート関連)
--last-value
Last imported value in the incremental check column(インクリメンタルインポート関連)
--create-hive-table
hiveテーブルを作成します.構造はインポートテーブルと同じですが、タイプはstringです.作成したテーブルが存在する場合、エラーが表示されます.
--external-table-dir
hive外部テーブルHDFSパス
--hive-database
Hiveデータベース
--hive-import
データはhdfsではなくhiveにインポートされます(hiveの本質もhdfsです).
--hive-overwrite
hiveテーブルの上書き
--hive-table
hiveテーブル名
紙面に限り、すべてのコマンドラインをリストすることはできません. 
皆さんはsqoop helpで見ることができます.
sqoopの公式サイトで見ることもできます.
sqoopコマンドライン整理:https://github.com/MichaelZys/hello-word/blob/master/sqoop.xlsx