1. 程式人生 > >從hbase表1中讀取資料,最終結果寫入到hbase表2 ,如何通過MapReduce實現 ?

從hbase表1中讀取資料,最終結果寫入到hbase表2 ,如何通過MapReduce實現 ?

需要一:
將hbase中‘student’表中的info:name和info:age兩列資料取出並寫入到hbase中‘user’表中的basic:XM和basic:NL

class ReadStudentMapper extends TableMapper

package hbaseapi.hbase;


import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop
.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache
.hadoop.hbase.mapreduce.TableMapReduceUtil; import org.apache.hadoop.hbase.mapreduce.TableMapper; import org.apache.hadoop.hbase.mapreduce.TableReducer; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop
.mapreduce.Mapper.Context; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; public class Student2UserMapReduce extends Configured implements Tool { // Step 1 : Mapper public static class ReadStudentMapper extends TableMapper<ImmutableBytesWritable, Put> { @Override protected void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException { // create put , Put put = new Put(key.get()); // add cell/data to put for (Cell cell : value.rawCells()) { // get info family if ("info".equals(Bytes.toString(CellUtil.cloneFamily(cell)))) { // add name to put if ("name".equals(Bytes.toString(CellUtil .cloneQualifier(cell)))) { put.add(Bytes.toBytes("info"), Bytes.toBytes("XM"), CellUtil.cloneValue(cell)); } else if ("age".equals(Bytes.toString(CellUtil .cloneQualifier(cell)))) { put.add(Bytes.toBytes("info"), Bytes.toBytes("NL"), CellUtil.cloneValue(cell)); } } } // context output context.write(key, put); } } // Step 2 : Reducer public static class WriteUserReducer extends TableReducer<ImmutableBytesWritable, Put, NullWritable> { @Override protected void reduce(ImmutableBytesWritable key, Iterable<Put> values, Context context) throws IOException, InterruptedException { for (Put put : values) { context.write(NullWritable.get(), put); } } } // Step 3 : Driver public int run(String[] args) throws Exception { // 1) Configuration Configuration conf = this.getConf(); // 2) create job Job job = Job.getInstance(conf, this.getClass().getSimpleName()); job.setJarByClass(Student2UserMapReduce.class); // 3) set job // set scan 設定一個查詢範圍或條件 Scan scan = new Scan(); // 設定只掃描某些列或列簇 scan.addFamily(Bytes.toBytes("info")); // set Mapper TableMapReduceUtil.initTableMapperJob("student", scan, ReadStudentMapper.class, ImmutableBytesWritable.class, Put.class, job); // set Reducer TableMapReduceUtil.initTableReducerJob( "user", WriteUserReducer.class, job); //set reduce nums job.setNumReduceTasks(1); //at least one ,adjust as required!! boolean isSuccess = job.waitForCompletion(true); if (!isSuccess) { throw new IOException("error with job!"); } return isSuccess ? 0 : 1; } public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); int status = ToolRunner.run(// conf, // new Student2UserMapReduce(), // args // ); System.exit(status); } }

相關推薦

hbase1讀取資料最終結果寫入hbase2 如何通過MapReduce實現

需要一: 將hbase中‘student’表中的info:name和info:age兩列資料取出並寫入到hbase中‘user’表中的basic:XM和basic:NL class ReadStudentMapper extends Table

Matlab .fig檔案讀取資料並重新繪圖

Matlab提供了強大的函式集合,可以從.fig檔案中讀取圖中的資料,並重新繪製圖形。如果原始資料丟失,我們可以從.fig檔案中恢復原始資料,並基於原始資料做進一步的處理。 以下是一個從兩個不同檔案

標準輸入流讀取資料

 package chapter10.branch01;import java.io.BufferedReader;import java.io.InputStreamReader;public class TestStandarInput { public static v

HBase高階屬性hbase應用案例看行鍵設計HBasemapreduce結合Hbase讀取資料、分析寫入hdfshdfs讀取資料寫入Hbase協處理器和二級索引

1. Hbase高階應用 1.1建表高階屬性 下面幾個shell 命令在hbase操作中可以起到很到的作用,且主要體現在建表的過程中,看下面幾個create 屬性 1、 BLOOMFILTER 預設是NONE 是否使用布隆過慮及使用何種方式 布隆

python 檔案讀取資料同時去除掉空格和換行

從檔案中讀取資料,同時去除掉空格和換行,程式碼如下 import numpy as np def sort(path): w = open(path,'r') l = w.readlines() col=[] for k in l: k = k.strip('\n')

使用RandomAccessFile這個類檔案讀取資料讀取不出來

請看下面這段程式碼,相關的問題我應經註釋了出來: package timemanager; import java.io.EOFException; import java.io.File; import java.io.FileNotFoundException; im

HBase匯入資料3:使用MapReduceHDFS或本地檔案讀取資料寫入HBase(增加使用Reduce批量插入)

前面我們介紹了:為了提高插入效率,我們在前面只使用map的基礎上增加使用reduce,思想是使用map-reduce操作,將rowkey相同的項規約到同一個reduce中,再在reduce中構建put物件實現批量插入測試資料如下:注意到有兩條記錄是相似的。package cn

文字檔案讀取資料到集合並遍歷集合

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; /*  * 需求:從文字檔案中讀取資料(每一行

R檔案讀取資料輸出檔案

看了幾天的書,終於到這一步了,說實話,用R來做統計,很少有人手動的去輸入那些數字,肯定是從別的地方匯入的,我們用來處理就可以了,所以到這裡才算是真正的入門,前面都是做基礎的練手。 我學習R從《R語言與統計分析》入手,第一個例子,從書上的例子,入手,為大家能夠快速入門。 在F

資料庫讀取資料建立XML檔案並更新維護XML

public class OperateXML { /// <summary> /// 檔案全路徑 /// </summary> private string fullF

java實現k-means演算法(用的鳶尾花iris的資料mysq資料庫讀取資料

k-means演算法又稱k-均值演算法,是機器學習聚類演算法中的一種,是一種基於形心的劃分方法,其中每個簇的中心都用簇中所有物件的均值來表示。其思想如下: 輸入: k:簇的數目;D:包含n個物件的資料集。輸出:k個簇的集合。 方法: 從D中隨機選擇幾個物件作為起始質心

MapReduce功能實現四---小綜合(hbase讀取資料統計並在hdfs降序輸出Top 3)

MapReduce功能實現系列: 方法一: 在Hbase中建立相應的表1: create 'hello','cf' put 'hello','1','cf:hui','hello world' put 'hello','2','cf:hui','h

python3 簡單實現csv文件讀取內容並對內容進行分類統計

tmp spa writer ict 打開文件 while 類型 spl blog 新手python剛剛上路,在實際工作中遇到如題所示的問題,嘗試使用python3簡單實現如下,歡迎高手前來優化import csv #打開文件,用with打開可以不用去特意關閉file了

一個文件讀取數據到內存然後再把內存的數據寫入另外一個文件

錯誤代碼 就會 取數據 stream off err sig where 返回值 //從一個文件中讀取數據到內存,然後再把內存中的數據寫入另外一個文件 #include "stdafx.h"#include "stdlib.h" in

【120】TensorFlow CSV檔案讀取資料並訓練線性迴歸模型(面向新手)

正文開始。 學習 TensorFlow 讓我的思維發生了變化。 計算機本質上是一種數學的工具,而我在學習程式設計的時候,思維也不可避免地收到了影響。傳統的程式設計思想,常常認為程式就應該像數學定理或者數學函式一樣,給出一個確定的結果。這是一種基於邏輯推導

Prefuse學習(二)資料庫讀取資料

prefuse是一個非常不錯的開源視覺化專案,尤其是用在social network/complex network上,個人感覺要比jung好。不過可惜的是,prefuse的user manual還在建

怎麼excel讀取資料_python

下載擴充套件庫 xlrd 讀excle xlwt 寫excle 直接在百度上搜就能下載 下載後使用 import xlrd 就可以讀excle檔案了 開啟檔案: xls = xlrd.open_workbook(fileName) 選擇表:括號內為第幾個表 sheet

資料結構 2-11設順序va資料元素遞增有序。試寫一演算法將x插入到順序的適當位置上以保持該的有序性。

將近半年時間內一直沒有寫部落格了,最近一直研究資料結構。該是整理一下的時候了。採用的是嚴蔚敏的習題集。 2.11設順序表va中的資料元素遞增有序。試寫一演算法,將x插入到順序表的適當位置上,以保持該表的有序性。 演算法思想: 1 3 4 5 6 7 8 9 假如插入的是2則,需要將所有比2大的

資料庫配置讀寫分離後如何方便地主庫讀取資料

基於ThinkPHP5.1.15+MySQL演示主從同步配置與讀寫分離解決方案。 軟體環境:ThinkPHP5.1.15+MariaDB 10.1.30(主伺服器)+MySQL5.7(從伺服器)+Win10 兩臺伺服器IP分別為:192.168.199.234、192.1

用pythonexcel表格讀取資料生成可以放在科技論文的圖片

最近在寫畢業小論文,需要插入符合科技論文的資料圖,其實很多的設定都是規定好的,雖然自己在excel中設定一下也不花多少時間,覺得好玩想著是不是可以用python做一個自動讀取資料畫圖的小指令碼,以後寫報告也可以用得著。 其實整個思路很清楚,兩個晚上的樣子就搭好了大體的程式,