2017-12-18 15 views
0

フィールドの1つに特殊文字があるので、区切り文字として低い値を使用したかったのです。 Hiveはデリミタ(\ 0)でうまく動作しますが、NoSuchElement Exceptionでsqoopが失敗します。デリミタが\ 0として検出されていないように見えます。Sqoop:区切り文字として8進値( 0)を使用する

これは、私のハイブのsqoopスクリプトの様子です。助けてください。 VIエディタで

CREATE TABLE SCHEMA.test 
(
    name CHAR(20), 
    id int, 
    dte_report date 
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\0' 
LOCATION '/user/$USER/test'; 

sqoop-export \ 
    -Dmapred.job.name="TEST" \ 
    -Dorg.apache.sqoop.export.text.dump_data_on_error=true \ 
    --options-file ${OPTION_FILE_LOCATION}\conn_mysql \ 
    --export-dir /user/$USER/test \ 
    --input-fields-terminated-by '\0' \ 
    --input-lines-terminated-by '\n' \ 
    --input-null-string '\\N' \ 
    --input-null-non-string '\\N' \ 
    --table MYSQL_TEST \ 
    --validate \ 
    --outdir /export/home/$USER/javalib 

、区切り文字は「^ @」のように見え、区切り文字-c ODであなたはそれが区切り文字としてその文字を生成します、区切り文字として\ 000使用する必要があります\ 0

+0

私のタイプミスのように見えますが、sqoopパラメータの入力フィールドは "0"ではなく0に設定されています。 – roh

答えて

0

です。

0

この問題を解決できるmy sql conn文字列で、文字セットをUTF 8に設定します。

mysql.url=jdbc:mysql://localhost:3306/nbs?useJvmCharsetConverters=false&useDynamicCharsetInfo=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&useEncoding=true 
関連する問題