mapreduce生成HFile通过bulkload入hbase库问题
来源:互联网 发布:公司域名备案流程 编辑:程序博客网 时间:2024/05/22 14:22
最近有个需求,要将相同id的记录存储为hbase的一行,于是就将
id做md5后作为rowkey,相同id记录数据以json存储在列中,开始
想用一个mapper和一个reducer搞定的,mapper负责将数据组织好(
以id的md5值做key,整行数据组织成json串做value输出),reducer负责将相同
key的value拼接起来,并write到HFile中。
方法一:
mapper的输入输出格式为LongWritable,Text, Text, Text
reducer的输入输出格式为Text, Text,ImmutableBytesWritable, KeyValue
map阶段没问题,但是到了reduce的时候会出现类型转换异常,Text can't cast to ImmutableBytesWritable
百度了一番,说要map和reduce的输出必须都是ImmutableBytesWritable, KeyValue才行。
于是尝试方法二:
mapper的输入输出格式为LongWritable,Text, ImmutableBytesWritable, KeyValue
reducer的输入输出格式为ImmutableBytesWritable, KeyValue,ImmutableBytesWritable, KeyValue
map和reduce都顺利通过,但是输出到HFile的数据总是缺少,通过
hbase hfile -p -f hftp://ns1nn2/terminal_test/hbase/2016/05/10/data/3eb1ee99f7414255a2762b0fa5bc2631|grep "236857970"
查看其中的一个id对应的数据发现,相同id的数据没有拼接在一起,并且相同id的数据只有一条,
也就是在map阶段就把相同id的数据给过滤成只写一条了,不知道什么原因,猜测写ImmutableBytesWritable, KeyValue
的时候相同key的记录会相互覆盖吧。
方法三:
增加一个job处理相同id记录的json字符串拼接,
job1的mapper的输入输出格式为LongWritable,Text, Text, Text
reducer的输入输出格式为Text, Text, Text, Text
job2的输入路径为job1的reducer的输出路径,
mapper输入输出格式为Text, Text,ImmutableBytesWritable, KeyValue
成功!
id做md5后作为rowkey,相同id记录数据以json存储在列中,开始
想用一个mapper和一个reducer搞定的,mapper负责将数据组织好(
以id的md5值做key,整行数据组织成json串做value输出),reducer负责将相同
key的value拼接起来,并write到HFile中。
方法一:
mapper的输入输出格式为LongWritable,Text, Text, Text
reducer的输入输出格式为Text, Text,ImmutableBytesWritable, KeyValue
map阶段没问题,但是到了reduce的时候会出现类型转换异常,Text can't cast to ImmutableBytesWritable
百度了一番,说要map和reduce的输出必须都是ImmutableBytesWritable, KeyValue才行。
于是尝试方法二:
mapper的输入输出格式为LongWritable,Text, ImmutableBytesWritable, KeyValue
reducer的输入输出格式为ImmutableBytesWritable, KeyValue,ImmutableBytesWritable, KeyValue
map和reduce都顺利通过,但是输出到HFile的数据总是缺少,通过
hbase hfile -p -f hftp://ns1nn2/terminal_test/hbase/2016/05/10/data/3eb1ee99f7414255a2762b0fa5bc2631|grep "236857970"
查看其中的一个id对应的数据发现,相同id的数据没有拼接在一起,并且相同id的数据只有一条,
也就是在map阶段就把相同id的数据给过滤成只写一条了,不知道什么原因,猜测写ImmutableBytesWritable, KeyValue
的时候相同key的记录会相互覆盖吧。
方法三:
增加一个job处理相同id记录的json字符串拼接,
job1的mapper的输入输出格式为LongWritable,Text, Text, Text
reducer的输入输出格式为Text, Text, Text, Text
job2的输入路径为job1的reducer的输出路径,
mapper输入输出格式为Text, Text,ImmutableBytesWritable, KeyValue
成功!
0 0
- mapreduce生成HFile通过bulkload入hbase库问题
- HBase-mapreduce生成hfile
- MapReduce生成HFile文件,再使用BulkLoad导入HBase中(完全分布式运行)
- MapReduce生成HFile文件,再使用BulkLoad导入HBase中(完全分布式运行)
- MapReduce生成HFile入库到HBase
- MapReduce生成HFile入库到HBase
- MapReduce生成HFile入库到HBase
- MapReduce生成HFile入库到HBase
- MapReduce生成HFile入库到HBase
- MapReduce生成HFile入库到HBase
- bulkload方法入hbase
- 非mapreduce生成Hfile,然后导入hbase当中
- 非mapreduce生成Hfile,然后导入hbase当中
- MapReduce生成HFile入库到HBase及源码分析
- HBase-Spark生成hfile
- 将HDFS中的数据通过MapReduce产生HFile,然后将HFile导入到HBase具体案例分析
- Hbase通过BulkLoad快速导入数据
- Spark通过bulkLoad对HBase快速导入
- zookeeper初步
- 使用Jenkins+xcodebuild搭建iOS的持续集成系统
- Map的clear()方法
- 【Leetcode】Rising Temperature
- 转义字符含义整理
- mapreduce生成HFile通过bulkload入hbase库问题
- canvas之二:绘制三角形
- 纯HTML的静态网页中添加一段统计网页访问量的JAVA Script代码
- UI基础_hitTest扩大响应范围
- css3-飞进页面效果
- find5 刷安卓4.4 魔趣
- Container With Most Water
- Python---Image 模块
- 专题三 Problem1006