Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop Sqoop无法从teradata获取数据,java.IO异常_Hadoop_Teradata_Sqoop - Fatal编程技术网

Hadoop Sqoop无法从teradata获取数据,java.IO异常

Hadoop Sqoop无法从teradata获取数据,java.IO异常,hadoop,teradata,sqoop,Hadoop,Teradata,Sqoop,这是我的sqoop导入,我使用它从Teradata中提取数据 sqoop import -libjars jars --driver drivers --connect connection_url -m 1 --hive-overwrite --hive-import --hive-database hivedatabase --hive-table hivetable --target-dir '/user/hive/warehouse/database.db/table_name

这是我的sqoop导入,我使用它从Teradata中提取数据

     sqoop import -libjars jars --driver drivers --connect connection_url -m 1 --hive-overwrite --hive-import --hive-database hivedatabase --hive-table hivetable --target-dir '/user/hive/warehouse/database.db/table_name' --as-parquetfile --query "select c1,c2,c3, to_char(SOURCE_ACTIVATION_DT,'YYYY-MM-DD HH24:MI:SS') as SOURCE_ACTIVATION_DT,to_char(SOURCE_DEACTIVATION_DT,'YYYY-MM-DD HH24:MI:SS') as SOURCE_DEACTIVATION_DT,to_char(EFF_DT,'YYYY-MM-DD HH24:MI:SS') as EFF_DT,to_char(EXP_DT,'YYYY-MM-DD HH24:MI:SS') as EXP_DT,to_char(SYS_UPDATE_DTM,'YYYY-MM-DD HH24:MI:SS') as SYS_UPDATE_DTM,to_char(SYS_LOAD_DTM,'YYYY-MM-DD HH24:MI:SS') as SYS_LOAD_DTM from source_schema.table_name WHERE to_char(SYS_UPDATE_DTM,'YYYY-MM-DD HH24:MI:SS')> '2017-03-30 10:00:00' OR to_char(SYS_LOAD_DTM,'YYYY-MM-DD HH24:MI:SS') > '2017-03-30 10:00:00' AND \$CONDITIONS"
下面是我收到的错误,这运行了两天都很好,最近开始返回下面的错误

17/03/29 20:07:53 INFO mapreduce.Job:  map 0% reduce 0%
17/03/29 20:56:46 INFO mapreduce.Job: Task Id : attempt_1487033963691_263120_m_000000_0, Status : FAILED
Error: java.io.IOException: SQLException in nextKeyValue
    at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:277)
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:556)
    at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)
    at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
    at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)
    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:164)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.sql.SQLException: [Teradata JDBC Driver] [TeraJDBC 15.10.00.14] [Error 1005] [SQLState HY000] Unexpected parcel kind received: 9
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDriverJDBCException(ErrorFactory.java:94)
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDriverJDBCException(ErrorFactory.java:69)
    at com.teradata.jdbc.jdbc_4.statemachine.ReceiveRecordSubState.action(ReceiveRecordSubState.java:195)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.subStateMachine(StatementReceiveState.java:311)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.action(StatementReceiveState.java:200)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementController.runBody(StatementController.java:137)
    at com.teradata.jdbc.jdbc_4.statemachine.PreparedStatementController.run(PreparedStatementController.java:46)
    at com.teradata.jdbc.jdbc_4.statemachine.StatementController.fetchRows(StatementController.java:360)
    at com.teradata.jdbc.jdbc_4.TDResultSet.goToRow(TDResultSet.java:374)
    at com.teradata.jdbc.jdbc_4.TDResultSet.next(TDResultSet.java:657)
    at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:237)
    ... 12 more
当我在谷歌上搜索时,我看到人们因为不同的错误而得到相同的错误,我知道这与我在where子句中使用的时间有关,但不确定我到底要更改什么


提前感谢

Sqoop使用
$CONDITIONS
获取元数据和数据

  • 元数据-它将
    $CONDITIONS
    替换为1=0。因此,使用此条件不会提取任何数据,而只提取元数据

  • 使用1个映射器时的数据:它将
    $CONDITIONS
    替换为1=1。因此,所有数据都被提取

  • 多个映射器情况下的数据:它用一些范围条件替换
    $CONDITIONS

在JDBC客户端中尝试以下查询:

  • 选择c1、c2、c3、to_char(SOURCE_ACTIVATION_DT,'YYYY-MM-DD HH24:MI:SS')作为SOURCE_ACTIVATION_DT,to_char(SOURCE_DEACTIVATION_DT,'yyyyyy-MM-DD HH24:MI:SS')作为SOURCE_DEACTIVATION_DT,to_char(SOURCE_DEACTIVATION_DEACTIVATION_DT,'yyyyyyyy-MM-DD HH24:MI:SS')作为EXP_DT,to_char更新为yyyyyyyyy-dtu-DD,',to_char(SYS_-LOAD_DTM,'yyyyy-MM-DD HH24:MI:SS')作为SYS_-LOAD_DTM从源schema.table_名称to_char(SYS_-UPDATE_DTM,'yyyyy-MM-DD HH24:MI:SS')>'2017-03-30 10:00:00'或to_char(SYS_-LOAD_DTM,'yyyyyyy-MM-DD HH24:SS')>'2017-03-30 10:00:00'

  • 选择c1、c2、c3、to_char(SOURCE_ACTIVATION_DT,'YYYY-MM-DD HH24:MI:SS')作为SOURCE_ACTIVATION_DT,to_char(SOURCE_DEACTIVATION_DT,'yyyyy-MM-DD HH24:MI:SS')作为SOURCE_DEACTIVATION_DT,to_char(SOURCE_DEACTIVATION_DEACTIVATION_DT,'yyyyyyy-MM-DD HH24:MI:SS')作为SOURCE_DEACTIVATION_DT,to_char,'yyyyyyyyyyyyy-DD HH24:SS')作为EXP_-DT,to_-DT作为SYS_UPDATE_DTM,to_char(SYS_LOAD_DTM,'yyyyy-MM-DD HH24:MI:SS')作为SYS_LOAD_DTM从源schema.table(SYS_UPDATE_DTM,'YYYY-MM-DD HH24:MI:SS')>'2017-03-30 10:00:00'或to_char(SYS LOAD_DTM,'yyyyy-MM-DD HH24:MI:SS')>'2017-03-30 10:00:00'1”


如果这些都不起作用,那么带有此查询的sqoop命令将永远无法运行

感谢您提供宝贵的信息,开发人员。这两个要求都成功运行,但问题出在我处理的源头。源位置的数据被重铸到一个有大量记录的日期,我使用的功能用户有时间限制。