次の記事は、mysqlテーブルをhiveORCストレージ形式でパーティションテーブルにインポートしています。
mysqlテーブルをハイブTEXTfileストレージ形式のパーティションテーブルにインポートします。ジャンプするにはここをクリックしてください
SqoopはHCatalogのlibに依存する必要があるため、環境変数$ HCAT_HOMEを構成する必要があります。通常、hcatalogの関連パスは、ハイブディレクトリから見つけることができます。
- hive-hcatalog-core-1.2.2.jarをhive / libからsqoop / libにコピーします
- cp $ HIVE_HOME / lib / hive-shims * $ SQOOP_HOME / lib /
- / etc / profileファイルに追加します
export HCATALOG_HOME=${HIVE_HOME}/hcatalog
以下のスクリプトで割り当てる必要のある変数
$ {IP} mysqlが配置されているサーバーのIP
$ {USERNAME} mysqlユーザー名
$ {PWD} mysqlパスワード
$ MYSQLTABLEmysql表
$ {date_field}テーブルの時間フィールド
$ {partition_name}ハイブに追加する必要のあるパーティションフィールドの名前
$ {partition_value}ハイブパーティション値
1. Sqoopは、データを作成してハイブorcテーブルにインポートします
sqoop import \
--connect jdbc:mysql://$IP:3306/$MYSQLDB \
--username $USERNAME \
--password $PWD \
--table $MYSQLTABLE \
--driver com.mysql.jdbc.Driver \
--hcatalog-database intelligentCoal \
--create-hcatalog-table \
--hcatalog-table t_user_orc \
--where "date_format(${date_field},'%Y-%m-%d')='${partition_value}' and \$CONDITIONS" \
--hcatalog-partition-keys ${partition_name} \
--hcatalog-partition-values ${partition_value} \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1
whereオプションは、必要に応じて追加または追加されません。whereを追加しない場合の効果は、-where "1 = 1 and \ $ CONDITIONS" \と同じです。
2.Sqoopは既存のハイブオークテーブルにデータをインポートします
sqoop import \
--connect jdbc:mysql://$IP:3306/$MYSQLDB \
--username $USERNAME \
--password $PWD \
--table $MYSQLTABLE \
--driver com.mysql.jdbc.Driver \
--hcatalog-database intelligentCoal \
--hcatalog-table t_user_orc \
--where "date_format(${date_field},'%Y-%m-%d')='${partition_value}' and \$CONDITIONS" \
--hcatalog-partition-keys ${partition_name} \
--hcatalog-partition-values ${partition_value} \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1
フィールドタイプを指定しない場合、MySQLのvarcharデータもハイブに抽出されたときにvarcharタイプになりますが、ハイブでvarcharタイプを操作するとさまざまな問題が発生します。
1.長いテキストおよび特殊文字を含むテキストの不完全な抽出
2.ハイブ操作orcテーブルvarcharタイプフィールドが文字化けする
解決策:データを抽出するときにフィールドタイプを指定します(xxxは文字列タイプに変更する列です)
-map-column-hive xxx=String,xxxx=String
-------------------------------------------------- -------------------------------------------------- ---------------
接続する JDBC接続情報 ユーザー名 JDBC認証ユーザー名 パスワード JDBC認証パスワード テーブル インポートするソーステーブルの名前 運転者 JDBCドライバーを指定します create-hcatalog-table テーブルを作成する必要があることを指定します。指定しない場合、デフォルトでは作成されません。指定したテーブルがすでに存在する場合は、エラーが報告されることに注意してください。 hcatalog-table エクスポートするターゲットテーブルの名前 hcatalog-storage-stanza ストレージ形式を指定すると、パラメーター値がcreatetableコマンドに接続されます。デフォルト:rcfileとして保存 hcatalog-partition-keys パーティションフィールドを指定し、複数のフィールドをコンマで区切ります(hive-partition-keyの拡張バージョン) hcatalog-partition-values パーティション値を指定し、複数のパーティション値をコンマで区切ります(hive-partition-valueの拡張)