我的蜂巢表:
create table tmp_base
(
userid string
,name string
,sex string
,age int
,create_date TIMESTAMP
)row format delimited
fields terminated by '\t'
stored as textfile
;
我的postgresql表:
create table tmp_base
(
userid varchar
,name varchar
,sex varchar
,age int8
,create_date TIMESTAMP
)
我的sqoop命令:
sqoop export \
--connect \
jdbc:postgresql://192.168.20.40:5432/bwarehouse?currentSchema=warehouse \
--username \
gpadmin \
--password \
change \
--table \
tb_user_base_property \
--update-key \
userid \
--columns \
userid,name,sex,age,create_date \
--export-dir \
/$HIVE_WAREHOUSE/db_test.db/tmp_base \
--input-fields-terminated-by \
"\t" \
--input-null-string \
"\\\\N" \
--input-null-non-string \
"\\\\N" \
错误:
2018-06-21 16:26:15,662致命[34454上的IPC服务器处理程序6] org.apache.hadoop.mapred.TaskAttemptListenerImpl:任务: try_1529372049637_0379_m_000000_0-退出:java.io.IOException: org.postgresql.util.PSQLException:错误:“年龄”列的类型 bigint,但表达式的字符类型有所不同:提示: 需要重写或强制转换表达式。位置:100, org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.close(AsyncSqlRecordWriter.java:205) 在 org.apache.hadoop.mapred.MapTask $ NewDirectOutputCollector.close(MapTask.java:676) 在org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:799) 在org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)处 org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:164)在 java.security.AccessController.doPrivileged(本机方法),位于 javax.security.auth.Subject.doAs(Subject.java:422)在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1920) 在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)导致 作者:org.postgresql.util.PSQLException:错误:列“年龄”是类型 bigint但表达式的字符类型不同提示:您将 需要重写或强制转换表达式。
如何解决此问题?