Hive自定义分隔符InputFormat

Hive默认创建的表字段分隔符为:\001(ctrl-A),也可以通过 ROW FORMAT DELIMITED FIELDS TERMINATED BY 指定其他字符,但是该语法只支持单个字符,如果你的分隔符是多个字符,则需要你自定义InputFormat来实现,本文就以简单的示例演示多个字符作为分隔符的实现。

[一]、开发环境

  • Hadoop 2.2.0
  • Hive 0.12.0
  • Java1.6+
  • Mac OSX 10.9.1

[二]、示例

1、准备演示数据 mydemosplit.txt

分隔符为:“|@^_^@| ”

2、编码实现InputFormat

MyDemoInputFormat.java

ps: 自定义实现接口InputFormat 、RecordReader,具体可以参考源码中得Base64TextInputFormat.java

编译打成jar包后,把该jar包copy一份到<HOME_HIVE>/lib/目录下,需要退出并重新进入Hive CLI模式

3、建表和导入数据

用参数 STORED AS file_format 建表:

导入上面的数据文件,对比导入前后表中的数据:

从上面的执行过程可以看出已经实现了自定义字符串作为分隔符。

—————–  EOF @Michael Sun —————–

原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]

本文链接地址: http://www.micmiu.com/bigdata/hive/hive-inputformat-string/

发表评论?

1 条评论。

  1. 楼主你好,我看到自定义分隔符为|@^_^@|,而在程序中替换的是
    \\ |@ \\ ^_ \\ ^@ \\ |。想请问一下其中的原因。我想用$@_@$这种分隔符,不知道该怎么写。或者你可以给我推荐个东西,我去看。谢谢~ 😛

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">