sqoop処理改行記号nやrなどの特殊記号処理
1234 ワード
企業ビッグデータプラットフォームETLでは、sqoopを使用してmysqlのデータをhiveに抽出する場合、mysqlライブラリの暗記フィールドに改行文字があるため、hiveにデータを格納した後、本数が増え(改行ごとにnull値のあるデータが多くなる)、統計データが不正確になる.sqoopエクスポートファイルはORCのようなカラムストレージではないので、置き換えるしかありません.エクスポート後に置換された文字を置換し、データテーブルをorcに格納
解決策:
2つのパラメータを使用すると、改行などの特殊文字の置換や削除が可能になります.
--hive-delims-replacement
--hive-drop-import-delims
,
1、 sqoop --hive-delims-replacement “ ” mysql
, \r, and \01 ,
2、 sqoop --hive-drop-import-delims mysql
, \r, and \01
:
/usr/local/sqoop/bin/sqoop-import --connect jdbc:mysql://ip:port/xxx --username xxxx --password xxxx --table data_clt_app_info_1210 --target-dir/tmp/tmp_data_clt_app_info_text_1210_bak --fields-terminated-by '||' -m 1 --split-by stat_date --delete-target-dir --hive-delims-replacement 'aaaaaaaa'
大功を成し遂げる
特殊改行をaaaaaaに変更
create table tmp.change_orc stored as orc as
select stat_date,app_id,queue,start_time,finish_time,regexp_replace(job_name,'aaaaaaaa',' ') as job_name from tmp.tmp_data_clt_app_info_text_1210_bak