我们的输入文件 hello0, 内容如下:

xiaowang 28 shanghai@_@zhangsan 38 beijing@_@someone 100 unknown

逻辑上有3条记录, 它们以@_@分隔. 我们将分别用旧版MapReduce API 和新版MapReduce API实现自定义TextInputFormat,然后在hive配置使用, 加载数据.

首先用旧版API

1, 自定义Format6继承自TextInputFormat

package MyTestPackage;import java.io.IOException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.FileSplit;
import org.apache.hadoop.mapred.InputSplit;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.JobConfigurable;
import org.apache.hadoop.mapred.LineRecordReader;
import org.apache.hadoop.mapred.RecordReader;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.TaskAttemptContext;
import org.apache.hadoop.mapred.TextInputFormat;  public class Format6 extends TextInputFormat {@Overridepublic RecordReader getRecordReader (InputSplit split, JobConf job, Reporter reporter)  throws IOException {byte[] recordDelimiterBytes = "@_@".getBytes();return new LineRecordReader(job, (FileSplit)split, recordDelimiterBytes);}}

2.导出为MyInputFormat.jar, 放到 hive/lib中

3.在HIVE DDL中配置使用

create table hive_again2(name varchar(50), age int, city varchar(30))
stored as INPUTFORMAT 'MyTestPackage.Format6' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

成功load数据-

新API

1, 自定义Format5继承自TextInputFormat

package MyTestPackage;import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.RecordReader;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.lib.input.LineRecordReader;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;public class Format5 extends TextInputFormat {@Overridepublic RecordReader createRecordReader (InputSplit split, TaskAttemptContext tac) {byte[] recordDelimiterBytes = "@_@".getBytes();return new LineRecordReader(recordDelimiterBytes);}}

2.导出为MyInputFormat.jar, 放到 hive/lib中

3.在HIVE DDL中配置使用

create table hive_again1(name varchar(50), age int, city varchar(30))
stored as INPUTFORMAT 'MyTestPackage.Format5' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

出错了!

把Format5放到MapReduce中debug一切正常(http://www.cnblogs.com/silva/p/4490532.html), 为什么给hive用就不行了呢? 没明白.. 有知道的同学请指点.谢了!

转载于:https://www.cnblogs.com/silva/p/4491281.html

HIVE: 自定义TextInputFormat (旧版MapReduceAPI ok, 新版MapReduceAPI实现有BUG?)相关推荐

  1. 微信7.0版本与旧版更新对比 新版微信7.0版更新了什么

    微信7.0版本与旧版更新对比 新版微信7.0版更新了什么 微信发布了最新版微信7.0版本,变化比较大.微信7.0版更新了什么?微信7.0版本与旧版什么区别. 微信7.0版本更新了什么? 微信7.0版本 ...

  2. 旧版OpenGL 与 新版OpenGL

    分割线:OpenGL3.0. 3.0之前,所有OpenGL版本都与早期版本完全向后兼容.针对OpenGL 1.1编写的代码可以在OpenGL 2.1实现中很好地执行. 3.0,引入了废弃functio ...

  3. 【Python】Windows:PyCharm 旧版卸载与新版安装汉化参考(专业版试用期/社区版)

    目录 一.PyCharm 2019.1.2 旧版卸载 (1)旧版备份 (2)旧版卸载 (3)旧版安装文件删除 (4)hosts 文件修改 (5)旧版环境变量修改 (6)注册表删除 二.PyCharm  ...

  4. [JIRA] 从3.6.2旧版升级到新版6.0.8的详细过程

    前言: JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. 公司原来用的是JIRA 3.6.2版本, ...

  5. 计算机书籍旧版好还是新版好,新固件还不如老版本好用?教你如何禁止Kindle自动更新!...

    新固件还不如老版本好用?教你如何禁止Kindle自动更新! 2020-02-21 21:35:41 2点赞 25收藏 1评论 固件更新是对Kindle的一次升级,一般来说,静读君是希望大家积极更新的, ...

  6. 图标出问题_同是Office365,为什么你的软件图标还是旧版的?

    为什么你的office365套件最新版的图标还是旧版? 是新版图标还没向正式版用户推送吗? 我的office365的账号有问题吗? 难道是我打开的方式不对吗? 旧版图标 新版图标 打开产品信息一看你的 ...

  7. win10图标变白纸_同是Office365,为什么你的软件图标还是旧版的?

    为什么你的office365套件最新版的图标还是旧版? 是新版图标还没向正式版用户推送吗? 我的office365的账号有问题吗? 难道是我打开的方式不对吗? 旧版图标 新版图标 打开产品信息一看你的 ...

  8. 弹性盒模型--新版与旧版比较(2)

    弹性空间与元素具体位置设置是加在子元素身上的 <style> body{ margin: 0; } #box{ height: 300px; border: 1px solid #000; ...

  9. 新版opencv兼容旧版_【标准换版】关于家用和类似用途电器用外置电源适配器、充电器和内置开关电源产品认证执行新版标准的通知...

    各相关认证企业: GB4343.1-2018<家用电器.电动工具和类似器具的电磁兼容要求 第1部分:发射>标准(以下简称"新版标准")已发布,并将于2020年6月1日实 ...

最新文章

  1. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)
  2. soj 4539 贪心+优先队列
  3. ASP.NET 5系列教程 (二):Hello World
  4. linux lvm 系统快照,利用Linux LVM进行快照备份
  5. 在哪里可以找到用于读取 YML 配置文件的 Spring 文档
  6. 通过python里面的pyautogui自动化控制鼠标和键盘操作
  7. 【图像分割应用】医学图像分割(一)——脑区域分割
  8. 数据科学竞赛-计算机视觉赛流程
  9. 【赠书活动】优雅免费领书指南
  10. Java 正则表达式 工具类 中文 英文 email 手机号 身份证 数字 日期
  11. c# —— 枚举和值的隐藏副作用
  12. milk and news paper(transfer)
  13. LeetCode(617)——合并二叉树(JavaScript)
  14. PS网页设计教程V——如何在Photoshop中创建一个商业网站布局
  15. android SQLite使用SQLiteOpenHelper类对数据库进行操作
  16. 优化理论08-----约束优化的最优性条件、拉格朗日条件、凸性、约束规范、二阶最优性条件(下)
  17. shell脚本循环嵌套
  18. Social Engineering Data
  19. 服务器远程管理--远程桌面(图形)
  20. 0基础尝试实现UnityURP渲染管线的AdditionalLit(点光源,聚光灯)非平行光的光照模型代码

热门文章

  1. html分级显示的下拉列表,javascript实现在下拉列表中显示多级树形菜单的方法
  2. rango php,韩天峰(Rango)的博客
  3. python中logging模块详解_python logging日志模块详解
  4. sublime text3 选词及批量操作、设置书签快捷键、打开的插件view in browser
  5. VB 详细枚举指定目录、文件夹文件列表
  6. 京东发布全球物流无人机研报:美国领先、非洲政策最开放,中国产业链全景最复杂...
  7. 亲历李飞飞的AI4ALL,是一种怎样的体验?
  8.  ̄□ ̄他咬了蜘蛛一口,从此蜘蛛精通C语言
  9. 百度系无人车创业公司领骏科技完成新一轮融资
  10. 【Java】 Java反射机制总结