Mapreduce读取hbase汇总到RDBMS
前言 Hbase对Mapreduce API进行了扩展,方便Mapreduce任务读写HTable数据。 HBase作为源的MapReduce读取示例 package hbase;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import jav
前言
Hbase对Mapreduce API进行了扩展,方便Mapreduce任务读写HTable数据。
HBase作为源的MapReduce读取示例
<code>package hbase; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; 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.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat; public class ExampleHbaseToMysqlMapreduce { public static void main(String[] args) throws Exception { //hbase配置 Configuration config = HBaseConfiguration.create(); String tableName = "flws"; Scan scan = new Scan(); scan.setStartRow(Bytes.toBytes("5768014")); scan.setStopRow(Bytes.toBytes("5768888")); scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("AH")); scan.setCaching(500); scan.setCacheBlocks(false); //JOB定义 Job job = new Job(config, "ExampleHbaseMapreduce"); job.setJarByClass(ExampleHbaseToMysqlMapreduce.class); //设置map读取hbase方法 TableMapReduceUtil.initTableMapperJob(tableName, scan, MyMapper.class, Text.class,Text.class, job); //reduce设置 job.setReducerClass(MyReducer.class); job.setOutputFormatClass(NullOutputFormat.class); job.setNumReduceTasks(5); boolean b = job.waitForCompletion(true); if (!b) { throw new Exception("error with job!"); } } public static class MyMapper extends TableMapper<text text> { public void map(ImmutableBytesWritable row, Result value, Context context) throws IOException, InterruptedException { context.write( new Text(row.get()), new Text(value.getValue(Bytes.toBytes("cf"), Bytes.toBytes("AH")))); } } public static class MyReducer extends TableReducer<text text immutablebyteswritable> { private Connection conn = null; @Override protected void cleanup(Context context) throws IOException, InterruptedException { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } @Override protected void setup(Context context) throws IOException, InterruptedException { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://172.16.35.242/judgment?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull"; try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { conn = DriverManager.getConnection(url, "root", "root"); } catch (SQLException e) { e.printStackTrace(); } super.setup(context); } public void reduce(Text key, Iterable<text> values, Context context) throws IOException, InterruptedException { StringBuffer sb = new StringBuffer(); for (Text text : values) { sb.append(text.toString()); } try { Statement st = conn.createStatement(); st.executeUpdate("insert into test_mapreduce (id,ah) values (" + Integer.valueOf(key.toString()) + ",'" + sb.toString() + "')"); } catch (SQLException e) { e.printStackTrace(); } } } } </text></text></text></code>
原文地址:Mapreduce读取hbase汇总到RDBMS, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用pandas正確讀取txt文件,需要具體程式碼範例Pandas是一個廣泛使用的Python資料分析函式庫,它可以用來處理各種各樣的資料類型,包括CSV檔案、Excel檔案、SQL資料庫等。同時,它也可以用於讀取文字文件,例如txt文件。但是,在讀取txt檔案時,我們有時會遇到一些問題,例如編碼問題、分隔符號問題等。本文將介紹如何使用pandas正確讀取txt

使用pandas讀取txt檔案的實用技巧,需要具體程式碼範例在資料分析和資料處理中,txt檔案是一種常見的資料格式。使用pandas讀取txt檔案可以快速、方便地進行資料處理。本文將介紹幾種實用的技巧,以幫助你更好的使用pandas讀取txt文件,並配以具體的程式碼範例。讀取帶有分隔符號的txt檔案使用pandas讀取帶有分隔符號的txt檔案時,可以使用read_c

Pandas讀取網頁資料的實用方法,需要具體程式碼範例在資料分析和處理過程中,我們經常需要從網頁中取得資料。而Pandas作為一種強大的資料處理工具,提供了方便的方法來讀取和處理網頁資料。本文將介紹幾種常用的Pandas讀取網頁資料的實用方法,並附上特定的程式碼範例。方法一:使用read_html()函數Pandas的read_html()函數可以直接從網頁讀

Java中使用OpenCSV讀取和寫入CSV檔案的範例CSV(Comma-SeparatedValues)指的是以逗號分隔的數值,是一種常見的資料儲存格式。在Java中,OpenCSV是一個常用的工具庫,用於讀取和寫入CSV檔案。本文將介紹如何使用OpenCSV來實作讀取和寫入CSV檔案的範例。引進OpenCSV庫首先,需要引進OpenCSV庫到

PHP讀取Excel檔案方法及常見問題解答Excel是一種非常普遍的電子表格檔案格式,許多業務和資料都存放在Excel檔案中。在開發過程中,如果需要將Excel檔案中的資料匯入系統中,就需要使用PHP讀取Excel檔案。本文將介紹PHP讀取Excel檔案的方法及常見問題解答。一、PHP讀取Excel檔案方法1.使用PHPExcel類別函式庫PHPExcel是一個P

快速入門:Pandas讀取JSON檔案的方法,需要具體程式碼範例引言:在資料分析和資料科學領域,Pandas是一個重要的Python庫之一。它提供了豐富的功能和靈活的資料結構,能夠方便地對各種資料進行處理和分析。在實際應用中,我們經常會遇到需要讀取JSON檔案的情況。本文將介紹如何使用Pandas來讀取JSON文件,並附上特定的程式碼範例。一、Pandas的安裝

Golang如何讀取二進位檔案?二進位檔案是以二進位形式儲存的文件,其中包含了電腦能夠識別和處理的資料。在Golang中,我們可以使用一些方法來讀取二進位文件,並將其解析成我們想要的資料格式。以下將介紹如何在Golang中讀取二進位文件,並給出具體的程式碼範例。首先,我們需要使用os包中的Open函數開啟二進位文件,這將會傳回一個文件物件。然後,我們可以使

PHP文件處理入門:讀取與寫入的步驟指引在Web開發中,文件處理是一項常見的任務,無論是讀取用戶上傳的文件,還是將結果寫入文件供後續使用,理解如何在PHP中進行文件處理都是至關重要的。本文將提供一個簡單的指引,介紹PHP中文件的讀取和寫入的基本步驟,並附上程式碼範例供參考。文件讀取在PHP中,可以使用fopen()函數開啟一個文件,回傳一個文件資源(file
