Hive テーブルの行を Netezza テーブルにロードするために sqoop エクスポートを実行しようとしていました。問題は、値の配列を含むいくつかの列があり、これらの列のデータ型の DDL を Netezza で varchar(200) として作成し、sqoop ジョブを実行することです。しかし、不良行が制限に達したため、エラーが発生しています。以下は私のSqoopの仕事です:
sqoop export --options-file --direct --connect jdbc:netezza://10.90.21.140:5480/analytics --username sat144 --P --table analytics_stage --export-dir /home/dir1/analytics/data --fields-terminated-by '~' --input-null-string '\N' --input-null-non-string '\N' -m 1 -max-errors #0
以下の私の Netezza DDL:
CREATE TABLE analytics_stage ( id varchar(30), name varchar(60), dept nvarchar(99), dept_id nvarchar(200) );
私のHiveテーブルの列の値は以下です
Row1: 20134(id) sat(name) Data_Group(dept) [121,103,201,212,310] (dept_id)
誰でもこれについて私を助けることができますか? 列に負の値とHiveテーブルの値の配列がある場合、Netezzaで推奨されるデータ型は何ですか??
以下のSqoopエラーログ
16/05/09 15:46:49 INFO mapreduce.Job: map 50% reduce 0% 16/05/09 15:46:55 INFO mapreduce.Job: Task Id: attempts_1460986388847_0849_m_000000_1, Status: FAILED エラー: java.io. IOException: org.netezza.error.NzSQLException: エラー: 外部テーブル: 不正な入力行の数が maxerrors 制限に達しました
at org.apache.sqoop.mapreduce.db.netezza.NetezzaExternalTableExportMapper.run(NetezzaExternalTableExportMapper.java:255)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
原因: org.netezza.error.NzSQLException: エラー: 外部テーブル: 不正な入力行の数が maxerrors 制限に達しました