2016-09-16 80 views
1

任何人都直接在Hbase表上使用SparkSQL,比如Hive表上的SparkSQL。 我是新來的spark.Please指導我如何連接hbase和spark.How查詢hbase表。HBase表上的SparkSQL

+1

不會對我的問題有任何意見,它分解成 - 這是什麼原因,不是票價。 – user6608138

+0

爲什麼你需要在Hbase表上查詢? – Avijit

+0

您可以在Hive中創建Hbase的外部表。由於Hbase沒有構建在Hadoop文件系統之上的sql和分佈式列面向數據庫,我很懷疑您能夠在Hbase上進行查詢。 – Avijit

回答

4

AFAIK有2種方式連接到HBase的表

- 直接連接到HBase的:

直接連接HBase的,並創建一個RDDDataFrame最重要的是執行SQL。 我不打算重新發明輪子,請參閱How to read from hbase using spark 作爲@iMKanchwala在上述鏈接中的回答已經描述了它。唯一的東西是將其轉換爲數據框(使用toDF)並遵循sql方法。

- 將表註冊爲具有hbase存儲處理程序的hive外部表,並且您可以在hivecontext的spark上使用hive。這也是簡單的方法。

Ex : 
CREATE TABLE users(
userid int, name string, email string, notes string) 
STORED BY 
'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ( 
"hbase.columns.mapping" = 
」small:name,small:email,large:notes」); 

如何做到這一點,請參閱作爲example

我寧願方法1.

希望幫助...

+0

感謝您的答案。它對我更有幫助。我試過第二種方法意味着HBaseStorageHandler表,我無法使用HiveContext進行連接。可以請告訴我如何爲這種類型的表創建上下文對象。它會拋出ClassNotFoundException。是否需要任何配置? – user6608138

+0

我希望你沒有用過**。如果你使用,然後刪除.all *字符。我也編輯了我的答案。 REG。 hivecontext val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)就是這樣。 –

+0

CREATE TABLE test.sample(id string,name string) 存放於'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES(「hbase.columns.mapping」=「:key,details:name」) TBLPROPERTIES(「hbase.table.name」=「sample」);啓動Spark shell: spark-shell --master local [2] – user6608138