2017-06-01 16 views
0

ハイブからOracleデータベースにテーブルをエクスポートしようとしています。sqoop java.lang.RuntimeException:入力データを解析できません

テーブルハイブに私は

CREATE TABLE `db.to_oracle`(
    `ctn` string, 
    `platform_code` string, 
    `sum` double, 
    `days_ctn` int, 
    `mtr_comments` string, 
    `imsi` string, 
    `ban` int, 
    `price_plan` string, 
    `market_code` string, 
    `currency` string, 
    `balance` string, 
    `time_key` date) 
ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 

からマイsqoop声明

sqoop export \ 
-D mapreduce.job.queuename=adhoc \ 
-D oracle.jdbc.mapDateToTimestamp=false \ 
--connect jdbc:oracle:thin:secret \ 
--password pas \ 
--username user\ 
--export-dir /apps/hive/warehouse/db.db/to_oracle/ \ 
--input-fields-terminated-by '\t' \ 
--input-lines-terminated-by '\n' \ 
--table database.oracle_table 

をエクスポートしようと、私は

java.lang.RuntimeException: Can't parse input data: '9696278394S10.01dolg_neaktivnost#20170513_3#1#12.0525099318958479562895398812VSE1NIKORUR-9992017-05-13' 

このエラーが出ることがsqoopは、区切り文字を認識しないようですか何か。それはなぜですか、どうすれば修正できますか?

+0

'db.to_oracle'テーブルのフィールド区切り文字とは何ですか? - 入力フィールドは '#'または '\ t'で終了しますか? –

+0

@devそれは '\ t'です。私はテーブルを再作成し、 'ROW FORMAT DELIMITED FIELDS TERMINATED BY ';を指定し、区切り文字として'; 'を使用して解決しました。 – Evgenii

答えて

0

問題は、あなたがハイブテーブルに区切り文字を指定しなかったとして、デフォルトのハイブの区切り文字があり、区切り記号である: '\ 001' BY TERMINATED

FIELDS \ 002」BY TERMINATED

コレクションアイテム「

BY TERMINATED MAPのKEYS '\ 003 \' BY TERMINATED

LINES 'n' を

変更区切り文字のいずれかでハイブテーブルの作成、またはあなたのsqoopジョブで問題を解決してください。

関連する問題