国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

HBase實戰(1):數據導入方式

數據庫
作為Hadoop生態系統中重要的一員, HBase作為分布式列式存儲, 在線實時處理的特性, 備受矚目, 將來能在很多應用場景, 取代傳統關系型數據庫的江湖地位. 本篇博文重點講解HBase的數據導入, 描述三種方式, Client API, Bulkload, 以及Hive Over HBase。

 *). Client API實現

借助HBase的Client API來導入, 是最簡易學的方式.

  1. Configuration config = HBaseConfiguration.create(); 
  2. // 配置hbase.zookeeper.quorum: 后接zookeeper集群的機器列表 
  3. config.set("hbase.zookeeper.quorum""tw-node109,tw-node110,tw-node111"); 
  4. // 配置hbase.zookeeper.property.clientPort: zookeeper集群的服務端口 
  5. config.set("hbase.zookeeper.property.clientPort""2181"); 
  6.   
  7. HTable htable = null
  8. try { 
  9.   // 配置hbase的具體表名 
  10.   htable = new HTable(config, "hbase_table"); 
  11.   // 設置rowkey的值 
  12.   Put put = new Put(Bytes.toBytes("rowkey:1001")); 
  13.   // 設置family:qualifier:value 
  14.   put.add(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes("value")); 
  15.   // 使用put類, 寫入hbase對應的表中 
  16.   htable.put(put); 
  17. } catch (Exception e) { 
  18.   e.printStackTrace(); 
  19. } finally { 
  20.   if (htable != null) { 
  21.     try { 
  22.       htable.close(); 
  23.     } catch (IOException e) { 
  24.       e.printStackTrace(); 
  25.     } 
  26.   } 

評: HBase的client api編程, 相對還是簡單的. 唯一需要注意的是, 若在本地編寫測試用列, 需要在本地配置hbase集群相關的域名, 使得域名和ip地址能對應上, 切記.
至于hbase client的讀寫優化, 我們放到下面的博文進行講解.

*). 批量導入Bulkload
HBase的bulkload數據導入, 分兩個階段:
#). 階段一: 借助使用HFileOutputFormat的MapReduce, 直接生成HBase的內部數據存儲格式HFile. 
其原理: HFileOutputFormat借助configureIncrementalLoad函數, 基于當前table的各個region邊界自動匹配MapReduce的分區類TotalOrderPartitioner, 這樣生成的HFile都對應一個具體的region, 此時效率最高效.
#). 階段二: 借助completebulkload工具, 將生成的HFile文件熱載入hbase集群.

1. importtsv數據導入演示
hbase自帶了importtsv工具, 其對tsv格式的數據文件提供了默認的支持.
數據文件data.tsv(以'\t'分割數據文件)

1
2
3
4
1001    lilei   17  13800001111
1002    lily    16  13800001112
1003    lucy    16  13800001113
1004    meimei  16  13800001114

上傳至hdfs目錄 /test/hbase/tsv/input

  1. sudo -u hdfs hdfs dfs -mkdir -p /test/hbase/tsv/input 
  2. sudo -u hdfs hdfs dfs -put data.tsv /test/hbase/tsv/input/ 

嘗試構建的HBase表student

  1. hbase shell 
  2. hbase> create 'student', {NAME => 'info'} 

執行importtsv

  1. sudo -u hdfs hadoop jar /usr/lib/hbase/hbase-<version>.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:phone -Dimporttsv.bulk.output=/test/hbase/tsv/output/ student /test/hbase/tsv/input  

沒有指定-Dimporttsv.bulk.output, importtsv默認行為是才有client api的put來導入數據于hbase, 指定-Dimporttsv.bulk.output, 則需要下一步

  1. sudo -u hdfs hadoop jar /usr/lib/hbase/hbase-<version>.jar completebulkload /test/hbase/tsv/output/ student 

數據驗證:
scan 'student', {LIMIT => 10}

2. 自定義bulkload數據導入演示
數據文件準備, 以之前data.tsv文件為準
構建HBase表student_new

  1. hbase> create 'student_new', {NAME => 'info'} 

編寫MapReduce代碼, 如下所示:

  1. public class MyBulkload { 
  2.   
  3.     public static class MyBulkMapper extends 
  4.             Mapper<LongWritable, Text, ImmutableBytesWritable, KeyValue> { 
  5.   
  6.         @Override 
  7.         protected void setup(Context context) throws IOException, 
  8.                 InterruptedException { 
  9.             super.setup(context); 
  10.         } 
  11.   
  12.         @Override 
  13.         protected void map(LongWritable key, Text value, Context context) 
  14.                 throws IOException, InterruptedException { 
  15.             // 數據按\t切分組織, 也可以自定義的方式來解析, 比如復雜的json/xml文本行 
  16.             String line = value.toString(); 
  17.             String[] terms = line.split("\t"); 
  18.             if ( terms.length == 4 ) { 
  19.                 byte[] rowkey = terms[0].getBytes(); 
  20.                 ImmutableBytesWritable imrowkey = new ImmutableBytesWritable(rowkey); 
  21.                 // 寫入context中, rowkey => keyvalue, 列族:列名  info:name, info:age, info:phone 
  22.                 context.write(imrowkey, new KeyValue(rowkey, Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes(terms[1]))); 
  23.                 context.write(imrowkey, new KeyValue(rowkey, Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes(terms[2]))); 
  24.                 context.write(imrowkey, new KeyValue(rowkey, Bytes.toBytes("info"), Bytes.toBytes("phone"), Bytes.toBytes(terms[3]))); 
  25.             } 
  26.         } 
  27.     } 
  28.   
  29.     public static void main(String[] args) throws Exception { 
  30.   
  31.         if ( args.length != 3 ) { 
  32.             System.err.println("Usage: MyBulkload <table_name> <data_input_path> <hfile_output_path>"); 
  33.             System.exit(2); 
  34.         } 
  35.         String tableName = args[0]; 
  36.         String inputPath = args[1]; 
  37.         String outputPathargs[2]; 
  38.   
  39.         // 創建的HTable實例用于, 用于獲取導入表的元信息, 包括region的key范圍劃分 
  40.         Configuration conf = HBaseConfiguration.create(); 
  41.         HTable table = new HTable(conf, tableName); 
  42.   
  43.         Job job = Job.getInstance(conf, "MyBulkload"); 
  44.           
  45.         job.setMapperClass(MyBulkMapper.class); 
  46.   
  47.         job.setJarByClass(MyBulkload.class); 
  48.         job.setInputFormatClass(TextInputFormat.class); 
  49.   
  50.         // 最重要的配置代碼, 需要重點分析 
  51.         HFileOutputFormat.configureIncrementalLoad(job, table); 
  52.   
  53.         FileInputFormat.addInputPath(job, new Path(inputPath)); 
  54.         FileOutputFormat.setOutputPath(job, new Path(outputPath)); 
  55.   
  56.         System.exit(job.waitForCompletion(true) ? 0 : 1); 
  57.           
  58.     } 
  59.   

注: 借助maven的assembly插件, 生成胖jar包(就是把依賴的zookeeper和hbase jar包都打到該MapReduce包中), 否則的話, 就需要用戶靜態配置, 在Hadoop的class中添加zookeeper和hbase的配置文件和相關jar包.

最終的jar包為 mybulk.jar, 主類名為com.m8zmyp.mmxf.MyBulkload, 生成HFile, 增量熱載入hbase

  1. sudo -u hdfs hadoop jar <xxoo>.jar <MainClass> <table_name> <data_input_path> <hfile_output_path> 
  2. hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles <hfile_output_path> <table_name> 

 

  1. sudo -u hdfs hadoop jar mybulk.jar com.m8zmyp.mmxf.MyBulkload student_new /test/hbase/tsv/input /test/hbase/tsv/new_output 
  2. hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /test/hbase/tsv/new_output student_new 

數據驗證:

  1. scan 'student_new', {LIMIT => 10} 

*). 借助Hive Over Hbase

構建Hbase表hbase_student

  1. hbase> create 'hbase_student', 'info' 

構建hive外表hive_student, 并對應hbase_student表

  1. CREATE EXTERNAL TABLE hive_student (rowkey string, name string, age int, phone string) 
  2. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
  3. WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age,info:phone"
  4. TBLPROPERTIES("hbase.table.name" = "hbase_student"); 

數據導入驗證:
1. 創建數據外表

  1. CREATE EXTERNAL TABLE data_student (rowkey string, name string, age int, phone string) 
  2. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'  
  3. LOCATION '/test/hbase/tsv/input/'; 

2. 數據通過hive_student導入到hbase_student表中

  1. SET hive.hbase.bulk=true
  2. INSERT OVERWRITE TABLE hive_student SELECT rowkey, name, age, phone FROM data_student; 


備注: 若遇到java.lang.IllegalArgumentException: Property value must not be null異常, 需要hive-0.13.0及以上版本支持
詳見: https://issues.apache.org/jira/browse/HIVE-5515

原文鏈接:http://www.cnblogs.com/mumuxinfei/p/3823367.html

責任編輯:彭凡 來源: 博客園
相關推薦

2019-09-16 12:55:27

HBaseKafka數據

2010-05-27 18:30:56

MySQL 命令行導入

2020-12-02 08:43:00

Flink SQLHBase場景

2024-04-09 13:20:00

Excel數據庫數據

2018-09-04 12:03:31

HBase大數據存儲

2021-06-25 17:41:35

騰訊NTA

2019-05-05 09:03:06

HBase大數據存儲數據存儲

2010-05-19 15:01:14

MySQL數據導入

2013-05-16 10:07:42

固態硬盤RAID 0三星840 Pro

2012-09-27 10:21:00

2019-08-08 15:05:26

HBase數據遷移命令

2009-11-16 11:31:54

Oracle數據導入

2020-07-08 13:46:25

Python數據分析預處理

2023-11-09 08:38:25

交叉表組件大數據

2016-12-27 09:08:34

HBase數據流程

2018-10-29 13:07:15

HBase存儲遷移

2010-04-14 09:24:29

在Oracle數據庫

2023-03-28 07:17:25

場景數據業務

2023-02-18 18:26:11

隨著信息大爆炸,企業

2015-05-13 15:15:16

HadoopHBaseMapReduce
點贊
收藏

51CTO技術棧公眾號

蜜臀av一区二区在线观看| 欧美综合一区二区| 欧美精品一区二区三区四区五区 | 亚洲女同精品视频| www.在线播放| 日本一二三不卡| 日韩精品在线观看av| 日韩精品成人一区二区三区| 91成人理论电影| 久久av资源| 91国产一区在线| 欧美视频三区| 日韩中文字幕视频| 高清不卡av| 日韩高清a**址| 国精一区二区三区| 91精品国产综合久久精品麻豆| 在线观看视频污| 亚洲国产另类精品专区| 窝窝九色成人影院| 中文字幕av一区二区三区高| 久久精品99国产| 久久综合色综合88| 九九九九免费视频| 国产亚洲综合色| www.日本xxxx| 国产精品久久久久久妇女6080| 国语对白做受xxxxx在线中国| 成人精品在线视频观看| 国产精品50p| 久久只精品国产| 黄色一级大片在线观看| 99re这里都是精品| 国产又猛又黄的视频| 综合婷婷亚洲小说| 在线国产小视频| 欧美人成免费网站| 欧美亚洲系列| 国产亚洲精品久久| 欧美电影在线观看一区| 97久久久久久| 精品国产aⅴ| 国产精品一区二区三区免费| 三级亚洲高清视频| 日韩日韩日韩日韩日韩| 中文字幕欧美三区| 欧美日韩国产亚洲沙发| 欧美一区二区三区小说| 欧美理论影院| 77777亚洲午夜久久多人| 亚洲深深色噜噜狠狠爱网站| 日韩av电影免费观看| 成人免费毛片片v| 色综合小说天天综合网| 一本大道综合伊人精品热热| 国产后进白嫩翘臀在线观看视频| 爽爽爽爽爽爽爽成人免费观看| 国产精品久一| 亚洲影影院av| 国产一区二区三区观看| 2018av男人天堂| 欧美久久一区二区| 亚洲精品tv| 成人综合网网址| 国产原创一区二区三区| 伦理电影国产精品| 精品动漫一区二区三区在线观看| 蜜桃在线一区| 亚洲japanese制服美女| 国产一区二区三区黄视频| 亚洲一级片网站| 91 com成人网| 中文字幕区一区二区三| 国产三区二区一区久久| 不卡一区二区三区四区| 手机亚洲第一页| www.99久久热国产日韩欧美.com| 91精品亚洲| 国产日本在线播放| 欧美一a一片一级一片| 国产极品一区| 亚洲综合在线中文字幕| 丁香婷婷综合网| 秋霞av在线| 欧美日韩成人在线播放| 性色一区二区三区| 免费av一级电影| 国产午夜精品一区二区三区| 欧美在线首页| 麻豆一区二区三区视频| 日韩高清免费观看| 午夜天堂精品久久久久| 日本黄大片一区二区三区| 日韩av中文字幕在线免费观看 | 青青草av网站| 欧美一级久久久久久久大片| 国产成人av| www.日本在线视频| 正在播放亚洲一区| 精品72久久久久中文字幕| 精品成在人线av无码免费看| 91麻豆精品国产自产在线观看一区 | 日本美女在线中文版| 91精品国产91久久久久福利| 国产麻豆视频一区二区| 色哟哟免费在线观看| 国产精品扒开腿做爽爽爽男男| 99re热视频精品| 国产精品一区二区日韩| 91免费精品视频| 国产精品进线69影院| 国产另类xxxxhd高清| 免费试看一区| 日韩欧美精品中文字幕| 台湾色综合娱乐中文网| 国产精品后入内射日本在线观看| 精品国产人成亚洲区| 国产欧美日韩亚洲一区二区三区| 伊人网在线免费观看| 国产成人亚洲综合青青| 国产亚洲精品aa午夜观看| 电影在线观看一区二区| 一区二区三区四区免费观看| 欧美成人精精品一区二区频| 亚洲精品黄色| 成人精品一区二区| 99在线视频播放| 都市激情亚洲色图| 成人激情电影在线| free亚洲| 情事1991在线| 亚洲精品视频免费观看| 欧美自拍一区| 老司机午夜激情| 国产国语刺激对白av不卡| 亚洲综合色噜噜狠狠| 成人嫩草影院| 日本ー区在线视频| 国产乱人伦精品一区二区| 欧美放荡的少妇| 日本伊人色综合网| 在线能看的av网址| 九九热只有这里有精品| 欧美不卡视频一区发布| 国产精品成人免费| 成人在线一区| 成年网站在线| 日韩欧美一区二区在线观看| 亚洲美女中文字幕| 91亚洲精华国产精华精华液| 日韩精品视频中文字幕| 国产黄色网页| 亚洲aⅴ日韩av电影在线观看 | yy4480电影网| 国产精品老女人精品视频| 欧美日韩亚洲精品内裤| 激情久久一区| 99爱在线观看| 国产一区二区视频播放| 97av在线影院| 色综合 综合色| 日韩av电影一区| 成人在线视频免费看| the porn av| 国产综合香蕉五月婷在线| 在线日韩av片| 日韩高清一区在线| 视频精品导航| 国产国产人免费人成免费视频| 亚洲尤物视频网| 亚洲第一区中文99精品| 91婷婷韩国欧美一区二区| 亚洲欧洲av| 黄色网址在线播放| 欧美精品一区二区性色a+v| 九九热视频这里只有精品| 亚洲成人中文在线| 国产精品老牛| 日日夜夜一区| 天堂在线第六区| 日韩性感在线| 久久免费高清视频| 欧美日韩免费视频| av电影一区二区| 91影院成人| 超清av在线| 日日躁夜夜躁aaaabbbb| 亚洲在线www| 在线日韩欧美视频| 欧美日韩在线视频一区| 精品一区二区国语对白| 狠狠色丁香婷婷综合影院| 黄色在线观看视频网站| bt电影在线| 吴梦梦av在线| 国产精品偷伦一区二区| 亚洲人成自拍网站| 婷婷综合在线观看| 成人av高清在线| 日韩视频二区|