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