Hive Handler Csv
- 一、字段带逗号
- 二、字段带换行符
- 三、字段带逗号和换行符
一、字段带逗号
100,"600,000,000.00",李世民
比如上面这行数据,字段"600,000,000,00"带多个逗号,这个可以用hive中内置的语句来解决,使用OpenCSVSerde来解析CSV格式的数据,并指定了CSV文件中使用的分隔符、引号字符和转义字符
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' with serdeproperties ( 'separatorChar' = ',', 'quoteChar' = '\"', 'escapeChar' = '\' )
- ‘separatorChar’ = ‘,’:指定CSV文件中使用的分隔符为逗号(,)
- ‘quoteChar’ = ‘"’:指定CSV文件中使用的引号字符为双引号(")
- ‘escapeChar’ = ‘\’:指定CSV文件中使用的转义字符为反斜杠(\)
这段代码表示分隔符为逗号,""中间的逗号不进行处理
二、字段带换行符
Name,Age,Address Alice,25,"123 Main St. Apt. 456" Bob,30,"789 Oak St."
比如上面这段数据,本来是两条数据,但第一条数据第三个字段中间多了个换行符,在load data进hive的时候就变成了三条数据
网上找了很久,没有看到hive能直接处理这种字段中间带换行符的方式,所以只能对csv文件进行预处理
1、用shell脚本sed命令正则表达式匹配替换""中间的换行符
2、用其它语言脚本处理csv文件替换换行符
#!/usr/bin/python # -*- coding:utf-8 -*- #处理csv文件中换行符等特殊字符(\r\n,\n,\r,\) #python csv_handler.py filepath import os import sys import csv import codecs import time filename = sys.argv[1] print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),'[', filename.encode('unicode_escape').decode(), ']开始处理') with open(filename, 'r') as srcFile, open(filename + '.tmp', 'w') as dstFile: #读取csv文件的每一行 fileReader = csv.reader(srcFile) fileWriter = csv.writer(dstFile, quoting=csv.QUOTE_ALL) for d in list(fileReader): for ii,dd in enumerate(d): if dd.find('\r\n') != -1: dd = dd.replace('\r\n', ' ') if dd.find('\n') != -1: dd = dd.replace('\n', ' ') if dd.find('\r') != -1: dd = dd.replace('\r', ' ') if dd.find('\') != -1: dd = dd.replace('\', '') d[ii] = dd fileWriter.writerow(d) dstFile.close() srcFile.close() #删除原文件,.tmp文件重命名为原文件 os.remove(filename) os.rename(filename + '.tmp', filename) print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),'[', filename.encode('unicode_escape').decode(), ']处理完成')
三、字段带逗号和换行符
- 直接把上面两种结合起来就可以了,建表使用字段带逗号那里的方式,然后预处理CSV文件,最后直接load data即可
猜你喜欢
- 7天前(a级景区评定机构)全国A级旅游景区创建与提升培训班在敦煌市举办
- 7天前(甘肃文旅项目)甘肃省文旅产业链招商引资推介会在天水成功举办
- 7天前(甘肃文化旅游宣传片)甘肃文旅推介走进重庆
- 7天前(纳米比亚旅游报价)纳米比亚旅游局2024年中国推介会圆满落幕
- 7天前(苏梅岛普吉岛哪个好玩)苏梅岛金普顿基塔蕾度假酒店推出家庭度假套餐
- 7天前(武隆旅游门票)炸了!519中国旅游日武隆甩出王炸福利,59.9元通玩6大景点?!
- 7天前(天津四季酒店开业时间)天津四季酒店邀你开启灿烂暑假
- 7天前(内蒙古冬季旅游攻略)内蒙古冬日奇遇:携程租车带你策马踏雪
- 7天前(曹妃甸美仑华府哪个楼层好)曹妃甸新城教育经济新引擎启动—美仑国际酒店盛大开业
- 7天前(第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章