sqoop常用コマンド1
これらの内容はsqoopの公式サイトから整理されたもので、1.4です.3バージョンのDocumentは、間違いがあれば訂正してほしい.
1.sqoopを使用してデータをインポートする
2.アカウントのパスワード
3.ドライブ
4.sql文のインポート方法を書く
逐次インポートであれば、スレッドを1つだけ開くことができます
もしwhere文の中に一重引用符を使うものがあれば、このように書けばいいです.「SELECT*FROM x WHERE a='foo'AND$CONDITIONS」
5. 1.4.3バージョンのsqoopでは複雑なsql文はサポートされず、or文はサポートされていません
6. --split-byデフォルトはプライマリ・キーで、100行のデータがあると仮定すると、そのSELECT*FROM sometable WHERE id>=lo AND id
1.sqoopを使用してデータをインポートする
sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST
2.アカウントのパスワード
sqoop import --connect jdbc:mysql://database.example.com/employees \
--username aaron --password 12345
3.ドライブ
sqoop import --driver com.microsoft.jdbc.sqlserver.SQLServerDriver \
--connect ...
4.sql文のインポート方法を書く
sqoop import \
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
--split-by a.id --target-dir /user/foo/joinresults
逐次インポートであれば、スレッドを1つだけ開くことができます
sqoop import \
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
-m 1 --target-dir /user/foo/joinresults
もしwhere文の中に一重引用符を使うものがあれば、このように書けばいいです.「SELECT*FROM x WHERE a='foo'AND$CONDITIONS」
5. 1.4.3バージョンのsqoopでは複雑なsql文はサポートされず、or文はサポートされていません
6. --split-byデフォルトはプライマリ・キーで、100行のデータがあると仮定すると、そのSELECT*FROM sometable WHERE id>=lo AND id
7. --Directは、mysqlのmysqldumpなど、いくつかのデータベース自体が提供するエクスポートデータを迅速にインポートするためのツールです.jdbcよりもパフォーマンスが優れていますが、大きなオブジェクトを知らない列です.使用する場合、迅速にインポートするツールのクライアントに必要なshellスクリプトのディレクトリの下にあります.
8.hdfsディレクトリにデータをインポートします.このコマンドは/shared/foo/ディレクトリにデータを書きます.
または
9.パラメータをクイックインポートツールに渡します.--で始まると、mysqlに渡すデフォルトの文字セットはlatin 1です.
10.オブジェクトへの変換--map-column-javaからjavaデータ型への変換--map-column-hiveからhiveデータ型への変換
11.インポート--check-column(col)Specifies the column to be examined when determining which rows to importを追加します. --incremental (mode) Specifies how Sqoop determines which rows are new. Legal values for mode include append and lastmodified. --last-value (value) Specifies the maximum value of the check column from the previous import.
インポートサポートの2つのモードappendとlastmodifiedを追加し、--incrementalで指定します.
12.BLOBやCLOBなどの大きなオブジェクトをインポートする際には特別な処理が必要です.16 MB未満の大きなオブジェクトは他のデータと一緒に保存できます.この値を超えると_lobsのサブディレクトリには
それらは大きいオブジェクトのために最適化したストレージフォーマットを採用して、最大2^63バイトのデータを格納することができて、私達は--inline-lob-limitパラメータを使ってlobファイルごとに最大の制限はいくらですかを指定することができます
0に設定すると、大きなオブジェクトは外部ストレージを使用します.
13.区切り文字、遷移文字
次の言葉はAnother"string with quotes"このコマンドを使用して$sqoop import--fields-terminated-by,--escaped-by--enclosed-by'"...次の結果が得られます"Some string,with a comma.","1","2","3","Another"string with quotes","4","5","6",...このコマンドを使用して$sqoop import--optionally-enclosed-by''(the rest as above)... "Some string, with a comma.",1,2,3... "Another\"string with quotes\"",4,5,6...
14.hiveインポートパラメータ--hive-home書き換え$HIVE_HOME--hive-importはhiveにデータを挿入し、hiveのデフォルトの区切り記号--hive-overwriteを使用して挿入--create-hive-tableを書き換え、テーブルがすでに存在する場合、この操作はエラーを報告します!--hive-tableをhiveに設定するテーブル名--hive-drop-import-delimsをhiveにインポートすると削除、r,and01--hive-delims-replacementをhiveにインポートするときにカスタム文字で置き換え、r,and01--hive-partition-key hiveパーティションのkey--hive-partition-value hiveパーティションの値--map-column-hiveタイプが一致し、sqlタイプがhiveタイプに対応
15.hive Null値処理sqoopはNULLをnull処理に自動的に変換しますが、hiveではデフォルトでnullを表すためにNが使用されます.事前処理は有効ではありません.--null-stringと--null-non-stringを使用してNull値を処理し、NをNに変換する必要があります.
16.hbaseにデータをインポートするときに--hbase-tableを加えると、hbaseにコンテンツがインポートされます.デフォルトでは、split列としてプライマリ・キーを使用しても--hbase-row-keyで指定できます.列族は--column-familyで指定されます.--directはサポートされていません.テーブルまたはカラムファミリーを手動で構築したくない場合は、--hbase-create-tableパラメータ
17.コード生成パラメータ、理解できなかった--bindir Output directory for compiled objects--class-name Sets the generated class name.This overrides --package-name. When combined with --jar-file, sets the input class. --jar-file Disable code generation; use specified jar --outdir Output directory for generated code --package-name Put auto-generated classes in this package --map-column-java Override default mapping from SQL type to Java type for configured columns.
18.プロファイルconf/sqoop-site.xmlで共通パラメータを構成する
ここに配置しないと、このようにコマンドを書く必要があります.
19.2つの特別なパラメータsqoop.bigdecimal.format.string大decimalがstringとして保存するか、stringとして保存すると0.000007、そうでないと1 E 7 sqoopとなる.hbase.add.row.keyがrowkeyとしての列も行データに追加するかどうかは、デフォルトでfalseです.
20.例
21.すべてのテーブルsqoop-import-all-tablesをインポートするには、各テーブルにプライマリ・キーが必要です.where条件でフィルタすることはできません.
22.export
sqoop-exportを使用してデータを挿入する場合、データがすでに存在する場合、挿入に失敗します.--update-keyを使用すると、各データが更新されていると考えられます.たとえば、次の文を使用します.
見つからなくても間違いはない
23.存在するなら更新、存在しないなら挿入してこのパラメータを加えればいい--update-mode allowinsert
24.トランザクションの処理は、statementが1回に100個のデータを挿入し、100個のstatementごとに1回コミットするので、1回に10000個のデータをコミットします.
25.例8.hdfsディレクトリにデータをインポートします.このコマンドは/shared/foo/ディレクトリにデータを書きます.
sqoop import --connnect --table foo --warehouse-dir /shared \
または
sqoop import --connnect --table foo --target-dir /dest \
9.パラメータをクイックインポートツールに渡します.--で始まると、mysqlに渡すデフォルトの文字セットはlatin 1です.
sqoop import --connect jdbc:mysql://server.foo.com/db --table bar \
--direct -- --default-character-set=latin1
10.オブジェクトへの変換--map-column-javaからjavaデータ型への変換--map-column-hiveからhiveデータ型への変換
11.インポート--check-column(col)Specifies the column to be examined when determining which rows to importを追加します. --incremental (mode) Specifies how Sqoop determines which rows are new. Legal values for mode include append and lastmodified. --last-value (value) Specifies the maximum value of the check column from the previous import.
インポートサポートの2つのモードappendとlastmodifiedを追加し、--incrementalで指定します.
12.BLOBやCLOBなどの大きなオブジェクトをインポートする際には特別な処理が必要です.16 MB未満の大きなオブジェクトは他のデータと一緒に保存できます.この値を超えると_lobsのサブディレクトリには
それらは大きいオブジェクトのために最適化したストレージフォーマットを採用して、最大2^63バイトのデータを格納することができて、私達は--inline-lob-limitパラメータを使ってlobファイルごとに最大の制限はいくらですかを指定することができます
0に設定すると、大きなオブジェクトは外部ストレージを使用します.
13.区切り文字、遷移文字
次の言葉はAnother"string with quotes"このコマンドを使用して$sqoop import--fields-terminated-by,--escaped-by--enclosed-by'"...次の結果が得られます"Some string,with a comma.","1","2","3","Another"string with quotes","4","5","6",...このコマンドを使用して$sqoop import--optionally-enclosed-by''(the rest as above)... "Some string, with a comma.",1,2,3... "Another\"string with quotes\"",4,5,6...
14.hiveインポートパラメータ--hive-home書き換え$HIVE_HOME--hive-importはhiveにデータを挿入し、hiveのデフォルトの区切り記号--hive-overwriteを使用して挿入--create-hive-tableを書き換え、テーブルがすでに存在する場合、この操作はエラーを報告します!--hive-tableをhiveに設定するテーブル名--hive-drop-import-delimsをhiveにインポートすると削除、r,and01--hive-delims-replacementをhiveにインポートするときにカスタム文字で置き換え、r,and01--hive-partition-key hiveパーティションのkey--hive-partition-value hiveパーティションの値--map-column-hiveタイプが一致し、sqlタイプがhiveタイプに対応
15.hive Null値処理sqoopはNULLをnull処理に自動的に変換しますが、hiveではデフォルトでnullを表すためにNが使用されます.事前処理は有効ではありません.--null-stringと--null-non-stringを使用してNull値を処理し、NをNに変換する必要があります.
sqoop import ... --null-string '\\N' --null-non-string '\\N'
16.hbaseにデータをインポートするときに--hbase-tableを加えると、hbaseにコンテンツがインポートされます.デフォルトでは、split列としてプライマリ・キーを使用しても--hbase-row-keyで指定できます.列族は--column-familyで指定されます.--directはサポートされていません.テーブルまたはカラムファミリーを手動で構築したくない場合は、--hbase-create-tableパラメータ
17.コード生成パラメータ、理解できなかった--bindir Output directory for compiled objects--class-name Sets the generated class name.This overrides --package-name. When combined with --jar-file, sets the input class. --jar-file Disable code generation; use specified jar --outdir Output directory for generated code --package-name Put auto-generated classes in this package --map-column-java Override default mapping from SQL type to Java type for configured columns.
18.プロファイルconf/sqoop-site.xmlで共通パラメータを構成する
property.name
property.value
ここに配置しないと、このようにコマンドを書く必要があります.
sqoop import -D property.name=property.value ...
19.2つの特別なパラメータsqoop.bigdecimal.format.string大decimalがstringとして保存するか、stringとして保存すると0.000007、そうでないと1 E 7 sqoopとなる.hbase.add.row.keyがrowkeyとしての列も行データに追加するかどうかは、デフォルトでfalseです.
20.例
#
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
--columns "employee_id,first_name,last_name,job_title"
# 8
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
-m 8
#
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
--direct
# sequencefile
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
--class-name com.foocorp.Employee --as-sequencefile
#
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
--fields-terminated-by '\t' --lines-terminated-by '
' \
--optionally-enclosed-by '\"'
# hive
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
--hive-import
#
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
--where "start_date > '2010-01-01'"
# dept_id
$ sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \
--split-by dept_id
#
$ sqoop import --connect jdbc:mysql://db.foo.com/somedb --table sometable \
--where "id > 100000" --target-dir /incremental_dataset --append
21.すべてのテーブルsqoop-import-all-tablesをインポートするには、各テーブルにプライマリ・キーが必要です.where条件でフィルタすることはできません.
sqoop import-all-tables --connect jdbc:mysql://db.foo.com/corp
22.export
sqoop-exportを使用してデータを挿入する場合、データがすでに存在する場合、挿入に失敗します.--update-keyを使用すると、各データが更新されていると考えられます.たとえば、次の文を使用します.
sqoop-export --table foo --update-key id --export-dir /path/to/data --connect …
UPDATE foo SET msg='this is a test', bar=42 WHERE id=0;
UPDATE foo SET msg='some more data', bar=100 WHERE id=1;
...
見つからなくても間違いはない
23.存在するなら更新、存在しないなら挿入してこのパラメータを加えればいい--update-mode allowinsert
24.トランザクションの処理は、statementが1回に100個のデータを挿入し、100個のstatementごとに1回コミットするので、1回に10000個のデータをコミットします.
25.例
$ sqoop export --connect jdbc:mysql://db.example.com/foo --table bar \
--export-dir /results/bar_data
$ sqoop export --connect jdbc:mysql://db.example.com/foo --table bar \
--export-dir /results/bar_data --validate
$ sqoop export --connect jdbc:mysql://db.example.com/foo --call barproc \
--export-dir /results/bar_data