zoukankan      html  css  js  c++  java
  • 关于sqoop增量导入过程中,文件合并遇到的问题。

    今天在多sqoop的增量导入操作,遇到下面这个问题(报错如下):

    2019-01-12 14:20:54,332 FATAL [IPC Server handler 0 on 38807] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1546053074766_0445_m_000000_0 - exited :
    java.lang.RuntimeException: Can't parse input data: ' sunt in culpa qu' at FRONTBANK_INCREAT_TABLE.__loadFromFields(FRONTBANK_INCREAT_TABLE.java:321) at FRONTBANK_INCREAT_TABLE.parse(FRONTBANK_INCREAT_TABLE.java:259) at org.apache.sqoop.mapreduce.MergeTextMapper.map(MergeTextMapper.java:53) at org.apache.sqoop.mapreduce.MergeTextMapper.map(MergeTextMapper.java:34) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:793) 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:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) Caused by: java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] at java.sql.Timestamp.valueOf(Timestamp.java:235) at FRONTBANK_INCREAT_TABLE.__loadFromFields(FRONTBANK_INCREAT_TABLE.java:318) ... 11 more

    看到上面这个错误,一定会时间的问题,其实不然,这就牵扯到sqoop导入数据的注意事项。我们知道在sqoop导入数据的时候是按照某个特定的分割符号进行分割的。
    在这里我是按照逗号去分割每一行的字段。当这一行的数据更新之后我们按照更新时间对数据进行进行新增,更新操作(这里注意不能做删除操作)这个错误是在将增量数据导入进来之后,
    和原始的数据做merge操作的时候出现的,也就是说数据在更新的时候出现的(数据错位)。下面分析一下这个错误:

    这里有一个逗号,当好我的默认分割符号是逗号,也就是在检查完这一行数据是更新的数据,然后按照一个一个字段进行匹配的时候,突然将时间赋值给这个字符串的时候就出现问题了

    所以才会报 Caused by: java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] 也就是匹配错误的意思。

    所以在sqoop导入数据的时候分割符号是很重要(sqoop的分隔符是一个头疼的事情。解决方法就是更换分隔符)

    至此问题得到解决
    
    
  • 相关阅读:
    权限管理系统准备
    java启动线程时 extends与implements的一个差异
    spring中使用quartz时注入时出现的错误
    bat执行java程序 good
    bat下执行java程序报错处理
    SQLite.dll在xp中部署时的报错处理
    hdu 4277 USACO ORZ (dfs暴搜+hash)
    Java实现 蓝桥杯 算法训练 动态数组使用
    Java实现 蓝桥杯 算法训练 动态数组使用
    Java实现 蓝桥杯 算法训练 动态数组使用
  • 原文地址:https://www.cnblogs.com/gxgd/p/10260018.html
Copyright © 2011-2022 走看看