日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作

發布時間:2025/4/5 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://www.zybuluo.com/aitanjupt/note/209941

  • 使用Hive或Impala執行SQL語句,對存儲在HBase中的數據操作
    • 〇、摘要
    • 一、基礎環境
    • 二、數據存儲在HBase中,使用Hive執行SQL語句
      • Ⅰ、創建Hive外部表
      • Ⅱ、從HBase讀
      • Ⅲ、向HBase寫
    • 三、數據存儲在HBase中,使用Impala執行SQL語句
      • Ⅰ、從HBase讀
      • Ⅱ、向HBase寫
    • 四、綜上所述

?

〇、摘要

Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供簡單的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行運行。?
HBase(Hadoop Database),是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,只能通過Rowkey來取數據,無法進行SQL查詢。?
因此如果Hive可以從HBase中取數據,并結合Hive的SQL查詢功能,便能做到較為復雜的SQL查詢操作。?
Impala對存儲在HDFS、HBase的數據提供直接查詢互動的SQL。除了像Hive使用相同的統一存儲平臺,Impala也使用相同的元數據,SQL語法(Hive SQL),ODBC驅動程序和用戶界面(Hue Beeswax)。Impala還提供了一個熟悉的面向批量或實時查詢和統一平臺。

達成目標:1、支持HBase多表聯接查詢等較復雜的SQL查詢操作。

一、基礎環境

CentOS-6.5?
JDK-1.7?
hive:hive-0.13.1+cdh5.3.6+397,impala:impala-2.1.5+cdh5.3.6+0,spark:spark-1.2.0+cdh5.3.6+379,?
elasticsearch:elasticsearch-1.7.1,elasticsearch-hadoop-hive:elasticsearch-hadoop-hive-2.1.1

二、數據存儲在HBase中,使用Hive執行SQL語句

無論是使用Hive還是Impala還是Spark,第一步都是讓他們先知道數據的表結構。?
Hive的內置數據類型可以分為兩大類:(1)、基礎數據類型;(2)、復雜數據類型。其中,基礎數據類型包括:TINYINT、SMALLINT、INT、BIGINT、BOOLEAN、FLOAT、DOUBLE、STRING、BINARY、TIMESTAMP、DECIMAL、CHAR、VARCHAR、DATE。

Ⅰ、創建Hive外部表

  • 先有HBase再有Hive?
    在HBase中已經存在一個名為hbaseanqi的表,表中一列族名為angel,列族中存在五列:name、visible、cdecimal、cdate、position。?
    需要在Hive中創建一個名為anqi的表,其中表中存在五列:BIGINT型的id、STRING型的name、BOOLEAN型的visible、DECIMAL(12,2)型的cdecimal、TIMESTAMP型的cdate。?
    Hive中anqi表的id、name、visible、cdecimal和列cdate分別來自于HBase中hbaseanqi表的Rowkey及angel:name、angel:visible、angel:cDecimal、angel:cdate列(angel為列族名)。?
    那么執行以下語句,在Hive中創建一個外部表:
  • CREATE EXTERNAL TABLE default.hive_hbase_anqi(
  • id BIGINT,
  • name STRING,
  • visible BOOLEAN,
  • cdecimal DECIMAL(12,2),
  • cdate TIMESTAMP)
  • ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
  • STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
  • WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, angel:name, angel:visible, angel:cdecimal, angel:cdate")
  • TBLPROPERTIES("hbase.table.name" = "hbaseanqi");
  • 可以看到,語句中通過WITH SERDEPROPERTIES指定了Hive與HBase的列映射關系。通過以上語句,在Hive中可以看到結構正確的表,并可以在Hue中看到HBase中的數據。

    注意:?
    建立起的Hive表中所有字段均變為小寫。這同ES-Hive一樣。詳情見:使用Hive或Impala執行SQL語句,對存儲在Elasticsearch中的數據操作。

  • 先有Hive再有HBase?
    因為在Hive中執行上面語句時,Hive需要去HBase中獲取一些信息,若是HBase中并無相關表,執行以上語句直接拋出異常:HBase table hbaseanqi doesn't exist while the table is declared as an external table。?
    因此在無HBase表的情況下,并不能創建Hive對應表。?
    這與ElasticSearch和Hive建立關聯時的情況不一樣。當在ElasticSearch并無相應index-type(索引-類型)時,Hive依然可以創建表成功。具體詳情可以查看:使用Hive或Impala執行SQL語句,對存儲在Elasticsearch中的數據操作?一文。
  • Ⅱ、從HBase讀

    我們選擇以下幾條有代表性的SQL查詢語句,來驗證使用Hive可以對存儲在HBase中的數據進行正確的查詢操作。

  • Decimal類型數據求和?
    SELECT SUM(cdecimal) FROM default.hive_hbase_anqi;?
    經驗證,可以正確的得到精確的求和值。

  • TIMESTAMP類型數據排序?
    SELECT * from default.hive_hbase_anqi ORDER BY cdate limit 5;?
    經驗證,可以依據TIMESTAMP值正確排序。

  • 普通表與外表關聯?
    select * from hive_hbase_anqi,sample_08 WHERE hive_hbase_anqi.id=sample_08.salary;?
    其中sample_08表是Hive普通表,hive_hbase_anqi是數據存儲在HBase中的Hive外表。?
    經驗證,通過執行上面語句,可以將Hive普通表與Hive的HBase外表進行正確的關聯。

  • Ⅲ、向HBase寫

    insert OVERWRITE table hive_hbase_anqi select salary,dtime,sdecimal,sname,svisible from sample_09;?
    將Hive普通表sample_09中的數據導入Hive外部表anqi中,去HBase中查看,可以看到數據被正確導入。?
    Hive四種數據導入方式:從本地文件系統中導入數據到Hive表;從HDFS上導入數據到Hive表;從別的表中查詢出相應的數據并導入到Hive表中;在創建表的時候通過從別的表中查詢出相應的記錄并插入到所創建的表中。?
    向HBase寫不是很方便。

    三、數據存儲在HBase中,使用Impala執行SQL語句

    在Impala中執行INVALIDATE METADATA?、REFRESH table_name語句便可讓 Impala識別在Hive中新建的或已發生變動的表。

    Ⅰ、從HBase讀

    Hive中建立的表,impala可以直接讀取使用。執行復雜SQL語句時,impala明顯比hive快很多。?
    同樣的,我們選擇上面(一.2)節中的典型SQL語句進行驗證,Impala-SQL均可以快速正確的返回結果,結果與Hive-SQL執行結果一致。

    Ⅱ、向HBase寫

    Impala的插入數據SQL語句與Hive相差很大,Impala更接近標準SQL。

  • 普通添加一行?
    insert into hive_hbase_anqi values(0,'1999-09-09',8.88,'name',true);?
    通過執行此語句,可以向HBase中添加一行數據。注意values里的順序,id首位,其它列按列名稱排序。
  • 從HBase其他表導入?
    insert into hive_hbase_anqi(id,name,cdate) select id,name,udate from hive_hbase_xi;?
    通過執行此語句,可以向HBase中添加一批從hive_hbase_xi表中取到的數據。
  • 四、綜上所述

    數據存儲在HBase中,使用Impala或Hive執行SQL語句進行操作是一個好主意。雖然使用Impala和使用Hive同樣可以正確執行,但使用Impala比使用Hive更加方便且更高效。目標達成。

    轉載于:https://www.cnblogs.com/davidwang456/articles/9253438.html

    總結

    以上是生活随笔為你收集整理的使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久精品视频网 | 裸体一区二区 | 色女人在线 | 风流老熟女一区二区三区 | www视频在线免费观看 | 波多野结衣办公室33分钟 | 青娱乐av在线 | 亚洲视频在线观看网址 | 你懂的在线观看网站 | 国产aⅴ精品一区二区三区久久 | 国产 欧美 日韩 | 国产福利短视频 | 日韩中文字幕精品 | 性高潮网站 | 亚洲国产精品av | 亚洲一区二区三区乱码 | 欧洲女同同性吃奶 | 永久免费未网 | 久久久久久久久久艹 | 久久伊人热 | 亚洲国产精品福利 | 中文字幕无码乱人伦 | 精品日本一区二区三区 | 韩国无码一区二区三区精品 | 国产做爰高潮呻吟视频 | 91精品国产综合久久久蜜臀九色 | 成人av电影在线播放 | 波多野结衣在线观看一区二区 | 福利视频第一页 | 99久免费精品视频在线观78 | 亚洲最大av网 | 内射国产内射夫妻免费频道 | 激情四射综合网 | 日本一二三区不卡 | www.蜜桃av.com | 精品国产网 | 一级片免费 | 欧美激情视频一区二区三区在线播放 | 农村激情伦hxvideos | 日本一区二区三区视频在线观看 | 日韩欧美中文在线观看 | 美女在线一区 | 日韩欧美在线观看视频 | 国产在线资源 | 成人综合网址 | 性做爰视频免费播放大全 | 国产大片中文字幕在线观看 | 狠狠爱成人 | 久热精品免费视频 | 韩国成年人网站 | 久久久精品久久久久 | av黄色免费 | 蜜桃视频无码区在线观看 | 亚洲观看黄色网 | 国产va在线观看 | 亚洲综合在线一区二区 | 一二三四视频社区在线 | 图片区视频区小说区 | 懂色av | 青青草这里只有精品 | 欧美日韩一区二区三区在线 | 国产麻豆一精品一av一免费 | 国产精品毛片一区二区在线看 | 草1024榴社区成人 | 亚洲欧美激情一区二区三区 | 91操碰| 久草老司机 | 中国黄色一级片 | 在线亚洲精品 | 欧美亚洲少妇 | 免费激情网 | 久久超| 干干干日日日 | 成年人在线观看av | 制服丝袜一区二区三区 | 少妇视频在线观看 | 私人网站 | 桃花久久 | 久久精品国产亚洲av久 | 欧美整片sss | 精品无码在线观看 | 亚州av在线 | 波多野结衣啪啪 | 日韩美女爱爱 | 少妇粉嫩小泬白浆流出 | 亚洲国产免费av | 国产免费一区 | 日本一区二区三区成人 | 天天色天天射综合网 | 天天噜 | 欧美www视频 | 91福利免费视频 | 狠狠的干狠狠的操 | 日韩欧美精品久久 | 欧美大胆a视频 | 我色综合 | 中文字幕有码在线播放 | 国产成人毛片 | 久久精品国产亚洲AV成人雅虎 |