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