欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

hbase導(dǎo)數(shù)據(jù)的幾種方式

??這里小編介紹兩種導(dǎo)入數(shù)據(jù)的方式,一種是基于hive,一種是基本文件生成HFile。

為阜寧等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及阜寧網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站制作、阜寧網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

1. hive-hbase-handler 導(dǎo)數(shù)據(jù)

這種方式需要一個(gè)jar包支持:
下載地址:https://down.51cto.com/data/2464129
將其放入$HBASE_HOME/lib 并將原有的jar包復(fù)制。
其次修改hive-site.xml

#加入:
<property>
<name>hive.aux.jars.path</name>
<value>file:///applications/hive-2.3.2/lib/hive-hbase-handler.jar,file:///applications/hive-2.3.2/lib/guava-14.0.1.jar,file:///ap    plications/hbase-2.0.5/lib/hbase-common-2.0.5.jar,file:///applications/hbase-2.0.5/lib/hbase-client-2.0.5.jar,file:///application    s/hive-2.3.2/lib/zookeeper-3.4.6.jar</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>

將hive數(shù)據(jù)導(dǎo)入到hbase中:
① 創(chuàng)建hive表:

create table hive_hbase_test(id int,name string,age int);

② 插入數(shù)據(jù)到hive表中

insert into hive_hbae_test(id,name,age) values(1,"xiaozhang","18"); 
insert into hive_hbase_test(id,name,age) values(2,"xiaowang","19");

這里測(cè)試環(huán)境可以這樣插入數(shù)據(jù),真實(shí)環(huán)境最好使用外表。
③ 映射 Hbase 的表

create table hive_hbase_pro(row_key string,id bigint,name string,age int) STORED BY "org.apache.hadoop.hive.hbase.HBaseStorageHandler" WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:id,info:name,info:age") TBLPROPERTIES ("hbase.table.name"="hive_hbase_pro");

此時(shí)在hbase中就會(huì)創(chuàng)建一個(gè)名為hive_hbase_pro表。

④ 插入到映射 Hbase 表中的數(shù)據(jù)

#在hive中配置如下參數(shù):
set hive.hbase.wal.enabled=false;
set hive.hbase.bulk=true;
set hbase.client.scanner.caching=1000000;

⑤導(dǎo)入數(shù)據(jù):

insert overwrite table hive_hbase_pro select id as row_key,id,name,age from hive_hbase_test;

此時(shí)在hive表中就有hive中的數(shù)據(jù):
hbase導(dǎo)數(shù)據(jù)的幾種方式
補(bǔ)充:如果hbase中表已經(jīng)存在,此時(shí)hive中只能建立外表:

create external table hive_hbase_xiaoxu(row_key string,id bigint,name string,age int) STORED BY "org.apache.hadoop.hive.hbase.HBaseStorageHandler" WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:id,info:name,info:age") TBLPROPERTIES ("hbase.table.name"="hive_hbase_pro");

這時(shí)建立的外表可以讀取到hbase表中的數(shù)據(jù)。

??總結(jié):這種方式中插入數(shù)據(jù)是按照一條一條的的形式插入的,速度是比較 慢的,如果數(shù)量級(jí)在百萬(wàn)千萬(wàn)級(jí)別機(jī)器比較好的情況下可以使用這種方式,執(zhí)行的速度大概 在每秒 2-3W 之間。
其中還有Phoneix 和pig的導(dǎo)數(shù),感覺(jué)和hive都大同小異,這里就不在介紹。

2. Bulkload 方式導(dǎo)數(shù)據(jù)

這種方式導(dǎo)入數(shù)據(jù)相當(dāng)?shù)目欤驗(yàn)樘^(guò)了WAL直接生產(chǎn)底層HFile文件。
優(yōu)勢(shì):

  • BulkLoad 不會(huì)寫 WAL,也不會(huì)產(chǎn)生 flush 以及 split。
  • 如果我們大量調(diào)用 PUT 接口插入數(shù)據(jù),可能會(huì)導(dǎo)致大量的 GC 操作。如果沒(méi)有對(duì) Hbase 的表進(jìn)行預(yù)分區(qū),會(huì)導(dǎo)致單機(jī)器的熱點(diǎn)問(wèn)題,嚴(yán)重時(shí)甚至可能會(huì)對(duì) HBase 節(jié)點(diǎn)的穩(wěn)定性造成影響,采用 BulkLoad 無(wú)此顧慮。
  • 過(guò)程中沒(méi)有大量的接口調(diào)用消耗性能。
    步驟:
    ① 將數(shù)據(jù)文件上傳到HDFS中:
    下載地址:https://down.51cto.com/data/2464129
    這里文件內(nèi)容是以逗號(hào)分隔。

    $hadoop fs -put sp_address.txt /tmp/sp_addr_bulktable

② 利用 importtsv 命令生成 Hfile 文件

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.bulk.output=/tmpbulkdata/sp_addr_data -Dimporttsv.columns=HBASE_ROW_KEY,sp_address:ID,sp_address:PLACE_TYPE,sp_address:PLACE_CODE,sp_address:PLACE_NAME,sp_address:UP_PLACE_CODE sp_address_bulkload "/tmp/sp_addr_bulktable"

參數(shù)介紹
-Dimporttsv.separator:指定文件的分隔符
Dimporttsv.bulk.output:生成的HFile的目錄(此目錄一定不存在)
Dimporttsv.columns:hbase表的關(guān)系映射
sp_address_bulkload:hbase表名(這里一定要在生成hfile之前創(chuàng)建hbase表)
"/tmp/sp_addr_bulktable":源數(shù)據(jù)目錄

**建表語(yǔ)句:**create ‘sp_address_bulkload’,’ sp_address’

③ 把 Hfile 文件導(dǎo)入到 Hbase 中

$hadoop jar /applications/hbase-2.0.5/lib/hbase-mapreduce-2.0.5.jar completebulkload  /tmpbulkdata/sp_addr_data/ sp_address_bulkload

這里有一個(gè)坑,網(wǎng)上說(shuō)是在hbase-server-VRESION-hadoop2.jar 這里小編用的是2.0.5版本的,這個(gè)completebulkload 主類在hbase-mapreduce-2.0.5.jar 這個(gè)jar包下。
好處:運(yùn)行該命令的本質(zhì)是一個(gè)hdfs的mv操作,并不會(huì)啟動(dòng)MapReduce。

④ 查看hbase表

$scan 'sp_address_bulkload'

hbase導(dǎo)數(shù)據(jù)的幾種方式
到此數(shù)據(jù)就被裝載進(jìn)入hbase中。
?當(dāng)然還可以使用API的方式,但是學(xué)習(xí)成本就會(huì)翻倍,如果場(chǎng)景不是特別復(fù)雜的情況下,使用shell基本可以解決。
?總結(jié):這種方式是最快的,原理是按照 Hfile 進(jìn)行的,一次性處理多條數(shù)據(jù),建議使用這種方式。在真是環(huán)境中會(huì) 相當(dāng)快的快,我們測(cè)試的是 4 億多條的數(shù)據(jù),20 分鐘搞定。可能這里看不出什么快不快,這里小編可以提供一個(gè)真實(shí)情況,256G內(nèi)存的機(jī)器中,用sqoop導(dǎo)入5000W數(shù)據(jù)需要27分鐘。

分享文章:hbase導(dǎo)數(shù)據(jù)的幾種方式
文章轉(zhuǎn)載:http://chinadenli.net/article4/gohooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、標(biāo)簽優(yōu)化、軟件開發(fā)電子商務(wù)、網(wǎng)站建設(shè)云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)