Hive 多字节分隔符:替换分隔符、RegexSerDe正则加载、自定义InputFormat

文章介绍了在Hive中处理含有多字节分隔符的数据的三种方法:1)通过程序替换分隔符;2)使用RegexSerDe正则加载,适应特殊数据格式;3)自定义InputFormat,定制数据读取逻辑。其中,RegexSerDe和自定义InputFormat提供了解决复杂分隔符问题的灵活性。
摘要由CSDN通过智能技术生成

Hive 多字节分隔符

解决方案一:替换分隔符

  • 使用程序提前将数据中的多字节分隔符替换为单字节分隔符。
  • 当数据量较大时,推荐使用MR程序分布式处理数据。

解决方案二:RegexSerDe正则加载

  • 可通过官网地址查看Hive SerDe类
  • 多种SerDe用于解析和加载不同类型的数据文件,常用的有ORCSerDe、RegexSerDe、JsonSerDe等。
  • RegexSerDe用来加载特殊数据的问题,使用正则匹配来加载数据。
  • 可解决数据中含分隔符的情况。
  • 例:
    分析数据格式: 01 || 周杰伦 || 中国 || 台湾 || 男 || 七里香
    正则表达式: ([0-9])\|\|(.)\|\|(.)\|\|(.)\|\|(.)\|\|(.)
    重新建表:
CREATE TABLE singer(id STRING,
									 name STRING,
									 country STRING,
									 province STRING,
									 gender STRING,
									 works STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES ("input.regex" = "([0-9]*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)");

解决方案三:自定义InputFormat

  • 可以通过自定义InputFormat自定义解析逻辑,实现读取每一行数据。
  • 与MapReduce中自定义InputFormat一致,继承TextInputFormat。
  • 需要上传自定义next方法的jar包,不如直接用正则表达式。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值