首頁 資料庫 mysql教程 hive查询hbase

hive查询hbase

Jun 07, 2016 pm 03:22 PM
hbase hive 查詢 背景

1. 背景 2.hbase查询的确是不太方便,除了指定rowkey,或者通过指定startkey stopkey进行scan之外,没有更有效的查询方式 如果想通过列值过滤,只能全表扫描了 如果要搞什么group by或者order by(除非你的rowkey做了相应设计) 更是没法弄 在传统的mysql/or

1. 背景

2.hbase查询的确是不太方便,除了指定rowkey,或者通过指定startkey stopkey进行scan之外,没有更有效的查询方式 如果想通过列值过滤,只能全表扫描了 如果要搞什么group by或者order by(除非你的rowkey做了相应设计) 更是没法弄 在传统的mysql/oracle得心应手的查询在hbase上就是束手束脚

3.当然可以通过写hadoop job解决问题,但为了查询去写job,代价未免有点高 于是hive出现了

4.有两个方法可以集成hive和hbase

1.使用HBaseStorageHandler,这个会直接操作HBase,可能会对线上产生影响

2.将HBase定期导入到HDFS,再通过hive访问HDFS

下面将详述第二种方法

HDFS导入

1.使用datax将HBase表导入到HDFS上,比如/group/wireless-arctic/task/arctic_task

2.hive产生外部表,从而避免导入数据
 CREATE EXTERNAL TABLE task_history (
 biz_type string,
 cid string,
 content string,
 ctime string,
 gmt_create string,
 hostName string,
 item string,
 mtime string,
 otags string,
 priority string,
 retry string,
 result string,
 srcImages string,
 src_url string,
 status string,
 summary string,
 task_type string,
 title string,
 userId string,
 userNick string,
 utags string,
 writer string
 )
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'
 LOCATION '/group/wireless-arctic/task';location是云梯文件的目录

3.测试
 select cid,result from task_history limit 10;
 Total MapReduce jobs = 1
 Launching Job 1 out of 1
 Number of reduce tasks is set to 0 since there's no reduce operator
 Selecting distributed mode: Input Size (= 2578823293 = 2 gigabytes 411 megabytes 366 kilobytes 125 bytes) is larger than hive.exec.mode.local.auto.inputbytes.max (= 134217728 = 128 megabytes 0 kilobytes 0 bytes)
 Starting Job = job_201311281255_6734353, Tracking URL = http://hdpjt2.alibaba-inc.com/jobdetails.jsp?jobid=job_201311281255_6734353
 Kill Command = /home/hadoop/hadoop-current/bin/../bin/hadoop job  -Dmapred.job.tracker=hdpjt:9001 -kill job_201311281255_6734353
 Hadoop job information for Stage-1: number of mappers: 10; number of reducers: 0
 2013-12-19 18:53:02,891 Stage-1 map = 0%,  reduce = 0%
 2013-12-19 18:53:11,017 Stage-1 map = 50%,  reduce = 0%
 2013-12-19 18:53:12,033 Stage-1 map = 90%,  reduce = 0%
 2013-12-19 18:53:19,394 Stage-1 map = 100%,  reduce = 100%
 Ended Job = job_201311281255_6734353
 OK
 200011928538    success
 200011928538    success
 200011909281    success
 200011928474    success
 200011909281    success
 200011928474    success
 110010569498    failure:userId:1782836127,contentId:110010569498  ImageFlow,call error and ret:1
 110010523403    success
 110010523921    success
 110010524299    success
 Time taken: 23.137 seconds = 23 seconds 137 milliseconds添加分区及自动化

1.完成了上面的步骤,你就可以查询数据了,但面临一个问题,数据更新怎么办?

一个比较通用的做法就是每天跑一个定时任务将HBase表dump到HDFS,即每天一个快照每天的快照可以存放在以日期命名的目录中,这样可以保存多份快照,出了问题也好追踪2.hive如何利用这每天的快照?

那就是hive分区

分区的本意是数据量大了切分数据,但目前我们并未如此使用,而是利用分区来区分快照删除之前的表

drop table task_history;产生一张分区表
CREATE EXTERNAL TABLE task_history (
biz_type string,
cid string,
content string,
ctime string,
gmt_create string,
hostName string,
item string,
mtime string,
otags string,
priority string,
retry string,
result string,
srcImages string,
src_url string,
status string,
summary string,
task_type string,
title string,
userId string,
userNick string,
utags string,
writer string
)
PARTITIONED BY (dt string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'
LOCATION '/group/wireless-arctic/task';其实就是在之前的建表语句中加了一行PARTITIONED BY (dt string)

添加分区

ALTER TABLE task_history ADD PARTITION(dt='20131223') LOCATION '/group/wireless-arctic/task/20131223';3.如何自动化

通过工具比如datax或者其他导出工具将HBase表导出到HDFS,正如前面提到的每天一个目录(以日期命名)

将每天的数据目录挂载到hive分区
hive -e "ALTER TABLE task_history ADD PARTITION(dt=`date -d yesterday +%Y%m%d`) LOCATION '/group/wireless-arctic/task/`date -d yesterday +%Y%m%d`';"将前面2个步骤的脚本整合到crontab 中就可以做到自动化了

最后如何通过分区查询
select * from task_history where dt='20131223' limit 10;即加上分区查询条件dt='20131223'

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
12306怎麼查詢歷史購票紀錄 查看歷史購票紀錄的方法 12306怎麼查詢歷史購票紀錄 查看歷史購票紀錄的方法 Mar 28, 2024 pm 03:11 PM

12306訂票app下載最新版是一款大家非常滿意的出行購票軟體,想去哪裡就去那裡非常方便,軟體內提供的票源非常多,只需要通過實名認證就能在線購票,所有用戶的出行車票機票都可以輕鬆買到,享受不同的優惠折扣。還能提前開啟預約搶票,預約飯店、專車接送都是可以的,有了它想去哪裡就去那裡一鍵購票,出行更加簡單方便,讓大家的出行體驗更舒服,現在小編在線詳細為12306用戶帶來查看歷史購票記錄的方法。  1.打開鐵路12306,點擊右下角我的,點擊我的訂單  2.在訂單頁面點擊已支付。  3.在已支付頁

學信網如何查詢自己的學歷 學信網如何查詢自己的學歷 Mar 28, 2024 pm 04:31 PM

學信網如何查詢自己的學歷?在學信網中是可以查詢到自己的學歷,很多用戶都不知道如何在學信網中查詢到自己的學歷,接下來就是小編為用戶帶來的學信網查詢自己學歷方法圖文教程,感興趣的用戶快來一起看看吧!學信網使用教程學信網如何查詢自己的學歷一、學信網入口:https://www.chsi.com.cn/二、網站查詢:第一步:點選上方學信網位址,進入首頁點選【學歷查詢】;第二步:在最新的網頁中點選如下圖箭頭所示的【查詢】;第三步:之後在新頁面點選【的登陸學信檔案】;第四步:在登陸頁面輸入資料點選【登陸】;

ppt背景怎麼全部替換 ppt背景怎麼全部替換 Mar 25, 2024 pm 04:25 PM

PPT背景替換是一種重要的操作,可快速統一簡報的視覺風格。透過修改投影片母版或使用「格式背景」功能,可以快速替換整個簡報的背景。此外,某些PPT版本還提供批次替換功能,可以輕鬆替換所有投影片的背景。在替換背景時,應注意選擇與簡報主題相符的背景,並確保背景清晰度和解析度符合要求。

美圖秀如何換照片背景底色 美圖秀如何換照片背景底色 Apr 08, 2024 pm 03:56 PM

1.開啟美圖秀軟體,選擇【圖片美化】,從相簿匯入照片。 2.點選底部工具列的【摳圖】,選擇【背景替換】功能。 3.在【背景】選項中,從純色方格中挑選所需底色,或上傳自訂圖片。 4.確認選擇後,點選【儲存】即可完成底色更換。

MySQL與PL/SQL的異同比較 MySQL與PL/SQL的異同比較 Mar 16, 2024 am 11:15 AM

MySQL與PL/SQL是兩種不同的資料庫管理系統,分別代表了關係型資料庫和過程化語言的特性。本文將比較MySQL和PL/SQL的異同點,並附帶具體的程式碼範例進行說明。 MySQL是一種流行的關聯式資料庫管理系統,採用結構化查詢語言(SQL)來管理和操作資料庫。而PL/SQL是Oracle資料庫特有的過程化語言,用於編寫預存程序、觸發器和函數等資料庫物件。相同

Go語言的誕生背景與初衷 Go語言的誕生背景與初衷 Apr 04, 2024 am 08:48 AM

Go語言誕生於Google,旨在解決C++的複雜性和並發支援不足的問題。它的初衷是創造一種簡潔易學、高效並發、記憶體安全、跨平台的語言,以提高程式設計師的生產力,建立可靠可擴展的系統,並促進程式碼的移植和共享。

如何使用Oracle 查詢表是否被鎖? 如何使用Oracle 查詢表是否被鎖? Mar 06, 2024 am 11:54 AM

標題:如何使用Oracle查詢表格是否被鎖定?在Oracle資料庫中,表鎖是指當一個事務正在對錶執行寫入操作時,其他事務想要對該表執行寫入操作或對表進行結構改變(如增加列、刪除行等)時會被阻塞。在實際開發過程中,我們經常需要查詢表格是否被鎖,以便更好地排除和處理相關問題。本文將介紹如何使用Oracle語句查詢表格是否被鎖,並給出具體的程式碼範例。要查詢表是否被鎖,我們

蘋果手機怎麼查詢啟動日期 蘋果手機怎麼查詢啟動日期 Mar 08, 2024 pm 04:07 PM

使用蘋果手機想要查詢啟動日期,最好的方法是透過手機中的序號來查詢,也可以透過存取蘋果的官網來進行查詢,透過連接電腦查詢,下載第三方軟體查詢。蘋果手機怎麼查詢啟動日期答:序號查詢,蘋果官網查詢,電腦查詢,第三方軟體查詢1、用戶最好的方式就是知道自己手機的序號,開啟設定通用關於本機就可以看到序號。 2.使用序號不僅可以知道自己手機的啟動日期,還可以查看手機版本,手機產地,手機出廠日期等。 3.用戶訪問蘋果的官網找到技術支持,找到頁面底部的服務和維修欄目,裡面查看iPhone的激活信息。 4.用戶

See all articles