2 yanxian007 yanxian007 于 2016.04.15 09:44 提问

db2 出来的数据文件有回车,进Hive出现数据丢失怎么解决 1C

db2导出的数据文件中,个别字段有回车,比如地址,备注等中文字段,从hdfs进入hive
出现数据丢失,因为hive默认就是回车来判断是否为一行,请问大家有遇到这种问题,
请指点怎么解决?

3个回答

u010704108
u010704108   2016.04.20 09:45

建表的时候把默认的改下
LINES TERMINATED BY '\n' =====>LINES TERMINATED BY ','

Istvan563
Istvan563   2016.06.28 16:47

如果是使用sqoop的话,可以试试这个
-hive-delims-replacement 用自定义的字符串替换掉数据中的\n, \r, and \01等字符

szx2544163762
szx2544163762   2016.11.02 17:00

如果使用sqoop来迁移数据到hive中,可以在sqoop的命令中添加一个--hive-drop-import-delims来去除原始数据中的\n,\r和\01这样的字符,这样就ok了

如果想使用多字段分隔符或换行符的话,因为hive只支持单字符的,可以参考http://www.aiuxian.com/article/p-2313749.html
需要重写hive的TextInputFormat和org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat类,并把它们打成jar包加入到hive的lib目录下和hadoop的目录下,重启集群

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
hive导入数据丢失问题
最近在做批量导入转换数据时,出现了部分数据丢失情况,最后经过检查发现,数据里在某个字段进行转换时, 出现了回车符,导致最终数据出来16列,但是目标表只有8列,所以数据就被多出来的8列数据给覆盖了,导致数据丢失(因涉及数据安全问题,这里就不方便进行截图了)。 解决方式: 就是在UDF里将回车符给替换掉即可。例子如下: str.replaceAll("[\\n | \\r]","");
DB2 换行回车符
很多人搞不清楚到底什么是回车(carriage return),什么是换行(line feed),下面简要介绍一下这两个概念的来历和区别。 在计算机还没有出现之前,有一种叫做电传打字机的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,
Hive常见问题及解决方法
在启动hive时,可能会遇到以下异常: java.sql.SQLException: Column name pattern can not be NULL or empty. 错误产生的原因是因为使用了高版本的mysql驱动,当然你可以使用较低版本的mysql驱动,网上很多解决方案也是这样的。 其实可以这么解决: 修改conf/hive-site.xml中
DB2乱码解决方法大全
英文操作系统,安装DB2后 控制中心--control center等会出现乱码情况,这里根据本人经验 把各种解决方法整理上传分享。
Sqoop oracle导到hive 由于存在空字符导致字段错位和丢失错误
感谢分享:http://blog.csdn.net/chaiyiping/article/details/40622507 Sqoop从oracle导入数据到hive,示例: [plain] view plain copy sqoop import --connect jdbc:oracle:thin:@oracle-host:port
Hive的HQL语句及数据倾斜解决方案
[版权申明:本文系作者原创,转载请注明出处]文章出处:http://blog.csdn.net/sdksdk0/article/details/51675005作者: 朱培          ID:sdksdk0Hive环境的搭建在这里也不重复说了,安装配置可以查看我的这篇文章:http://blog.csdn.net/sdksdk0/article/details/51512031。在这里主要是
Hive导入数据文件时中文乱码的解决
1.不要用SecureCRT,要用putty 2. 设置服务器的LANG=UTF8 3. 数据文件也要用UTF8
DB2新建表空间及导入导出数据
DB2新建表空间: su到相应的数据库用户下 db2 connect to 数据库名 db2(进入模式) create bufferpool bp32k  all nodes size -1 pagesize  32k(一个表空间对应一条) ...... force application all  drop tablespace 表空间名 CREATE REGULA
DB2在命令行下,从数据库中查出来的中文是乱码
中文乱码和代码页转换执行命令db2 connect to sample后系统返回如下错误:1.  SQL0332N There is no available conversion for the source code page "819"    to the target code page "1386". Reason Code "1". SQLSTATE=57017 DB2要求源代码页与目标代码页是彼此兼容的。在上述例子中,源代码页为819,目标代码页为1386,两者并不兼容才导致了数据库连接失败。
从数据库取数据时,带有回车/换行符替换方法
Public Shared Function delEnterCharForPrint2(ByVal strValue As String) As String Dim strReturn As String = strValue '单引号(因为后面会加入单引号,所以必须先替换单引号) strReturn = strReturn.Replac