使用hive讀取hbase資料
(1) 建立hbase識別的表
CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz");
hbase.table.name 定義在hbase的table名稱,多列時,data:1,data:2;多列族時,data1:1,data2:1;
hbase.columns.mapping 定義在hbase的列族,裡面的:key 是固定值而且要保證在表pokes中的foo欄位是唯一值
建立有分割槽的表
CREATE TABLE hbase_table_1(key int, value string) partitioned by (day string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz");
不支援表的修改
會提示不能修改非本地表。
hive> ALTER TABLE hbase_table_1 ADD PARTITION (day = '2012-09-22');
FAILED: Error in metadata: Cannot use ALTER TABLE on a non-native table FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
(2) 使用sql匯入資料
新建hive的資料表
create table pokes(foo int,bar string)row format delimited fields terminated by ',';
批量匯入資料
load data local inpath '/home/1.txt' overwrite into table pokes;
1.txt檔案的內容為
1,hello
2,pear
3,world
使用sql匯入hbase_table_1
<span style="color: rgb(255, 0, 0);">SET hive.hbase.bulk=<span class="code-keyword" style="background-color: inherit;">true</span>;</span>
insert overwrite table hbase_table_1 select * from pokes;
匯入有分割槽的表
insert overwrite table hbase_table_1 partition (day='2012-01-01') select * from pokes;
(3) 檢視資料
hive> select * from hbase_table_1;
OK
1 hello
2 pear
3 world
(注:與hbase整合的有分割槽的表存在個問題 select * from table查詢不到資料,select key,value from table可以查到資料)
(4)登入Hbase去檢視資料
hbase shell
hbase(main):002:0> describe 'xyz'
DESCRIPTION ENABLED {NAME => 'xyz', FAMILIES => [{NAME => 'cf1', BLOOMFILTER => 'NONE', REPLICATION_S true
COPE => '0', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSI
ZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}
1 row(s) in 0.0830 seconds
hbase(main):003:0> scan 'xyz'
ROW COLUMN+CELL
1 column=cf1:val, timestamp=1331002501432, value=hello
2 column=cf1:val, timestamp=1331002501432, value=pear
3 column=cf1:val, timestamp=1331002501432, value=world
這時在Hbase中可以看到剛才在hive中插入的資料了。
7 對於在hbase已經存在的表,在hive中使用CREATE EXTERNAL TABLE來建立
例如hbase中的表名稱為test1,欄位為 a: , b: ,c: 在hive中建表語句為
create external table hive_test (key int,gid map<string,string>,sid map<string,string>,uid map<string,string>) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" ="a:,b:,c:") TBLPROPERTIES ("hbase.table.name"
= "test1");
在hive中建立好表後,查詢hbase中test1表內容
Select * from hive_test;
OK
1 {"":"qqq"} {"":"aaa"} {"":"bbb"}
2 {"":"qqq"} {} {"":"bbb"}
查詢gid欄位中value值的方法為
select gid[''] from hbase2;
得到查詢結果
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_201203052222_0017, Tracking URL = http://localhost:50030/jobdetails.jsp?jobid=job_201203052222_0017
Kill Command = /opt/mapr/hadoop/hadoop-0.20.2/bin/../bin/hadoop job -Dmapred.job.tracker=maprfs:/// -kill job_201203052222_0017
2012-03-06 14:38:29,141 Stage-1 map = 0%, reduce = 0%
2012-03-06 14:38:33,171 Stage-1 map = 100%, reduce = 100%
Ended Job = job_201203052222_0017
OK
qqq
qqq
如果hbase表test1中的欄位為user:gid,user:sid,info:uid,info:level,在hive中建表語句為
create external table hive_test(key int,user map<string,string>,info map<string,string>) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" ="user:,info:") TBLPROPERTIES ("hbase.table.name" = "test1");
查詢hbase表的方法為
select user['gid'] from hbase2;
注:hive連線hbase優化,將HADOOP_HOME/conf中的hbase-site.xml檔案中增加配置
<property>
<name>hbase.client.scanner.caching</name>
<value>10000</value>
</property>
或者在執行hive語句之前執行hive>set hbase.client.scanner.caching=10000;
相關推薦
使用hive讀取hbase資料
(1) 建立hbase識別的表 CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERD
MapReduce 中如何處理HBase中的資料?如何讀取HBase資料給Map?如何將結果儲存到HBase中?
MapReduce 中如何處理HBase中的資料?如何讀取HBase資料給Map?如何將結果儲存到HBase中? Mapper類:包括一個內部類(Context)和四個方法(setup,map,cleanup,run); &n
使用MapReduce讀取HBase資料儲存到MySQL
Mapper讀取HBase資料 package MapReduce; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.client
hive讀取es資料
轉自:https://www.iteblog.com/archives/1857.html 本文將介紹如何通過Hive來讀取中的資料,然後我們可以像操作其他正常Hive表一樣,使用Hive來直接操作中的資料,將極大的方便開發人員。本文使用的各元件版本分別為
hive和hbase資料相互關聯
一.使用hive獲取,HBASE中資料 1.create 'hadoop:hbase_hive_human','info' 2.造數 put 'hadoop:hbase_hive_human','1','info:id','1' put 'hadoop:hbase_hive_human','1','
Spark學習-SparkSQL--06-spark讀取HBase資料報異常java.io.NotSerializableException
1.準備工作,安裝好HABSE之後,執行Hbase shell create ‘表名稱’, ‘列名稱1’,’列名稱2’,’列名稱N’ create ‘表名稱’,’列族名稱’ 在hbase中列是可以動態新增的,只需要有個列族就可以了 create
hive結合hbase資料處理解決方案測評二(優化篇)
接上一篇,對hbase引數進行優化,主要是調整與查詢效率相關的引數 count select count(1) from hbase_table; 部分欄位切表 insert overwrite table hive_table select a,b,c,d from hba
Pig指令碼從Hive中load資料並存入到Hbase中
1、我們先建一個Hive表test01: create table test01(name String, age int, phone String,province String, city String) ROW FORMAT DELIMITED FIELDS TERMINATED B
Sqoop與HDFS、Hive、Hbase等系統的資料同步操作
Sqoop與HDFS結合 下面我們結合 HDFS,介紹 Sqoop 從關係型資料庫的匯入和匯出。 Sqoop import
把kafka資料從hbase遷移到hdfs,並按天載入到hive表(hbase與hadoop為不同叢集)
需求:由於我們用的阿里雲Hbase,按儲存收費,現在需要把kafka的資料直接同步到自己搭建的hadoop叢集上,(kafka和hadoop叢集在同一個區域網),然後對接到hive表中去,表按每天做分割槽 一、首先檢視kafka最小偏移量(offset) /usr/local/kafka/bin/k
Java API 讀取HBase表資料
Java API 讀取HBase表資料 1. 在使用java api 去獲取資料的時候,先用 hbase shell 展示一下 hbase 中的表。 hbase(main):005:0> scan 'tsdb-uid' ROW
Hive讀取HDFS上面的資料和使用Squirrel客戶端連線Hive
一、把資料從HDFS匯入到hive的表裡 前面已經測試了利用Sqoop把資料從SQL Server匯入到hdfs中,但是分成了好多小檔案,正在思考如何把很多小檔案一起匯入到hive裡面,突然想到可以用*來代替啊。 1.建表 在hive裡面建立好對應的表格 create t
大資料之Spark(八)--- Spark閉包處理,部署模式和叢集模式,SparkOnYarn模式,高可用,Spark整合Hive訪問hbase類載入等異常解決,使用spark下的thriftserv
一、Spark閉包處理 ------------------------------------------------------------ RDD,resilient distributed dataset,彈性(容錯)分散式資料集。 分割槽列表,function,dep Op
HBase資料讀取流程解析
和寫流程相比,HBase讀資料是一個更加複雜的操作流程,這主要基於兩個方面的原因:其一是因為整個HBase儲存引擎基於LSM-Like樹實現,因此一次範圍查詢可能會涉及多個分片、多塊快取甚至多個數據儲存檔案;其二是因為HBase中更新操作以及刪除操作實現都很簡單,更新操作並沒有更新
Hive連線Hbase操作資料
Hive連線Hbase操作資料 版權宣告:本文為博主原創文章,未經博主允許不得轉載。轉載請註明來自http://blog.csdn.net/lr131425 https://blog.csdn.net/lr131425/article/details/72722932 Hi
HBase資料與Hive對映
背景:需要將HBase中表某列的值抽取到hive中,在hive中進行ETL的處理 在hive shell中執行如下命令 CREATE EXTERNAL TABLE hbase_table_1(key int, value string) STORED BY 'org.a
通過spark-sql快速讀取hive中的資料
1 配置並啟動 1.1 建立並配置hive-site.xml 在執行Spark SQL CLI中需要使用到Hive Metastore,故需要在Spark中新增其uris。具體方法是將HIVE_CONF/hive-site.xml複製到SPARK_CONF目錄下,然後在該配置檔案中,新增hive.metast
spark從hbase讀取寫入資料
將RDD寫入hbase 注意點: 依賴: 將lib目錄下的hadoop開頭jar包、hbase開頭jar包新增至classpath 此外還有lib目錄下的:zookeeper-3.4.6.jar、metrics-core-2.2.0.jar(缺少會提示hbase Rpc
sparksql讀取hive中的資料儲存到hdfs中
package wondersgroup_0905_Test import org.apache.spark.sql.SparkSession object sparkHive { def main(args: Array[String]): Unit = { //資料庫名稱
大資料Spark優化讀取Hbase--region 提高並行數過程詳細解析
一. Hbase 的 region 我們先簡單介紹下 Hbase 的 架構和 region : 從物理叢集的角度看,Hbase 叢集中,由一個 Hmaster 管理多個 HRegionServer,其中每個 HRegionServer 都對應一臺物理機器,一臺 HRegionServer