從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);
}
}
相關推薦
從hbase表1中讀取資料,最終結果寫入到hbase表2 ,如何通過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應用案例看行鍵設計,HBase和mapreduce結合,從Hbase中讀取資料、分析,寫入hdfs,從hdfs中讀取資料寫入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:使用MapReduce從HDFS或本地檔案中讀取資料並寫入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
用python從excel表格中讀取資料生成可以放在科技論文中的圖片
最近在寫畢業小論文,需要插入符合科技論文的資料圖,其實很多的設定都是規定好的,雖然自己在excel中設定一下也不花多少時間,覺得好玩想著是不是可以用python做一個自動讀取資料畫圖的小指令碼,以後寫報告也可以用得著。 其實整個思路很清楚,兩個晚上的樣子就搭好了大體的程式,