sqoop了解編-使用心得(sqoop増分注ぎ込み)

2617 ワード

sqoop使用心得(sqoop増分注ぎ込み)
2014年03月11日総合1870字号小中大評論閉鎖
sqoopは何をしているのか、ここでペンを無駄にしないで、ここでは主に次の初心者がsqoopに触れた問題について話します.
ビジネスシーンHiveがHqlを検索した結果MySqlに入り、現在本人は2つのステップで実現しています.
1 hiveクエリーの結果を直接Hiveのテーブルa(aテーブルは作成する必要があり、構造はbと同じ)に入力します2 sqoopを通じてテーブルaの内容をMySqlテーブルb(bテーブルはすでに存在します)にインポートします.このとき、hiveにaテーブルを作成する必要があります.bテーブルフィールドが多い場合は、作成文に1つのフィールドを書く必要があります.私は書きたくない.あなたも、sqoopでMySQLのbテーブルをhiveに直接インポートしていると思います.hiveテーブルのデフォルトの区切り文字は'001'なので、逆さまにするときは、表区切りパラメータ--fields-terminated-by't'を持って、以下のようにします.sqoop import--connect jdbc:mysql://db.foo.com/corp--table EMPLOYES--fields-terminated-by't'sqoopでhiveのテーブルをMySqlにインポートするには、hiveのテーブルセパレータは必ず't',sqoopでスムーズにインポートできます.デフォルトを使用すると、sqoopでインポートするときにパラメータ--input-fields-terminated-by'001'でもできません.きっと--input-fields-terminated-by't'です.
2 sqoop hiveデータをMySqlがhiveテーブルのカラムの値nullに遭遇した場合にインポートします.
データをインポートする過程で、カラム値がnullの場合、hiveでnullの場合はNで置き換えられるので、MySqlにインポートするときは、2つのパラメータを追加する必要があります.--input-null-string'\N'--input-null-non-string'\N'、1つの''を追加する必要があります.もしあなたがこれを通じてまだフィールドがnullの場合を解決できないならば、やはり何かNumberFormalt異常を報告するならば、それは比較的に別のもので、大丈夫で、私たちはやはり方法を解決して、これは究極の武器です.ほほほ
sqoopでMySqlをインポートするたびに、MySqlテーブルに名前が付けられていることに注意してください.JAvaファイルは、その後JARパッケージに電話し、sqoopにhadoopのMRに提出してHiveテーブルのデータを解析します.では、レポートのエラーに基づいて、対応する行を見つけて、ファイルを書き直して、コンパイルして、再パッケージして、sqoopは-jar-file、--class-nameの組み合わせを通じて、自分のjarパッケージの中のclassを実行することを指定することができます.をクリックして、hiveテーブルの各行のデータを解析します.スクリプトは次のとおりです.完全な例は次のとおりです.
./bin/sqoop export --connect "jdbc:mysql://localhost/aaa?useUnicode=true&characterEncoding=utf-8" --username aaa --password bbb --table table --export-dir /hive/warehouse/table --input-fields-terminated-by '\t' --input-null-string '\\N' --input-null-non-string '\\N' --class-name com.chamago.sqoop.codegen.bi_weekly_sales_item --jar-file /tmp/sqoop-chamago/bi_weekly_sales_item.jar

上の--jar-fileパラメータはjarパッケージのパスを指定します.--class-nameはjarパッケージのclassを指定します.これですべての解析異常を解決できます.
次はsqoopでよく使うコマンドを貼って、
1 MySQLテーブルをHiveにインポート
./sqoop import --connect jdbc:mysql://localhost/aaa?useUnicode=true&characterEncoding=utf-8 --username aaa --password bbb --table table2 --hive-import

3 sqoopインクリメンタル注入
sqoopは、2つのインクリメンタルMySqlをhiveにインポートするモードをサポートします.1つはappendです.すなわち、--incremental append--check-column num_などのインクリメンタル列を指定することです.iid--last-value 0は、タイムスタンプに基づいてもよい.例えば、--incremental lastmodified--check-column created--last-value'2012-02-01 11:0:00'は、「2012-02-01 11:0:00」よりもcreatedの方が大きいデータのみをインポートすることである.