Hadoop,Hive 数据预处理CR

记录一次大材小用,我在将.csv电影数据集
电影json数据
导入MySQL时,出现了报错:
err1
很明显,意味着.csv中的数据有非utf8编码的,
尝试使用file查看了下.csv文件的编码格式:

如果不确定原始编码,可以先用file命令尝试检测一下:

file -i input.csv

该命令会显示文件的MIME类型和字符编码信息。
utf
猜测可能是特殊格式的问题导致的!
首先想到了是使用iconv命令强转下编码格式,来实现数据的预处理

iconv -f utf-8 -t utf-8 -c movieSet.csv > movies.csv

解释下:

  • -f utf-8 表示原始文件编码是UTF-8
  • -t utf-8 由于你想要保持UTF-8编码不变,所以目标编码也是UTF-8。虽然这个设置在这种情况下看起来可能多余,但结合-c选项,它可以帮助过滤掉任何非法的UTF-8序列。
  • -c 参数表示在转换过程中丢弃无效字符(即无法转换为UTF-8的字符)。
    movieSet.csv 是源文件名。
  • movies_utf8_cleaned.csv 将转换后的内容重定向到新的文件movies_utf8_cleaned.csv
  • 如果movieSet.csv实际不是UTF-8编码,请先确定其实际编码,然后替换-f utf-8后的编码类型。

与此同时,也看了下MySQL的编码:
utf8

其实,感觉用Python预处理会好点
利用codecs模块或正则表达式来清除非法的UTF-8编码序列:
给出了之前使用的代码:

import codecs
import re

# 定义清理非法UTF-8编码序列的函数
def clean_utf8_string(input_str)
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值