sqoop从hive中表导出数据到mysql报错的问题

小指一抖内存泄漏 2015-02-05 09:15:09
问题描述:hive中表使用sqoop导出数据到mysql中,对于一些地址字段,会报下面的错误
15/02/05 08:30:45 INFO mapred.JobClient: map 0% reduce 0%
15/02/05 08:31:24 INFO mapred.JobClient: map 50% reduce 0%
15/02/05 08:31:26 INFO mapred.JobClient: Task Id : attempt_201411111542_1892827_m_000002_0, Status : FAILED
java.io.IOException: java.sql.SQLException: Incorrect string value: '\xF0\xA3\x84\x83\xE6\xB8...' for column 'DLVRY_ADDR_NM' at row 37
at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:220)
at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:46)
at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.write(MapTask.java:638)
at org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80)
at org.apache.sqoop.mapreduce.hcat.SqoopHCatExportMapper.map(SqoopHCatExportMapper.java:135)
at org.apache.sqoop.mapreduce.hcat.SqoopHCatExportMapper.map(SqoopHCatExportMapper.java:53)
也就是DLVRY_ADDR_NM字段中值插入到mysql库中,有些'\xF0\xA3\x84\x83\xE6\xB8...' 这样的插不进去,感觉是乱码,网上查了原因是UTF-8编码有可能是两个、三个、四个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。使用alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin修改了mysql库的编码格式,可还是不行,不知道有哪位大神遇到过?
...全文
524 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
白衣渡江 2015-09-01
  • 打赏
  • 举报
回复
可以使用正则表达式对结果进行过滤 [^\\u4E00-\\u9FA5|a-z|A-Z|0-9|+ \\[\\] \/&\. ——_ ,()() \\\\|/-《 <>》¥$ °!! *::~ ?? ×]*','
  • 打赏
  • 举报
回复
自顶一下,有哪位大神指导一下呢

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧