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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Hive常用的SQL命令操作

發布時間:2025/7/14 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hive常用的SQL命令操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自?http://blog.csdn.net/wisgood/article/details/17186599

創建表

hive> CREATE TABLE pokes (foo INT, bar STRING);?

創建表并創建索引字段ds

hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);?

顯示所有表

hive> SHOW TABLES;

按正條件(正則表達式)顯示表,

hive> SHOW TABLES '.*s';

表添加一列?

hive> ALTER TABLE pokes ADD COLUMNS (new_col INT);

添加一列并增加列字段注釋

hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');

更改表名

hive> ALTER TABLE events RENAME TO 3koobecaf;

刪除列

hive> DROP TABLE pokes;

元數據存儲

將文件中的數據加載到表中

hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;?

加載本地數據,同時給定分區信息

hive> LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

加載DFS數據 ,同時給定分區信息

hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

The above command will load data from an HDFS file/directory to the table. Note that loading data from HDFS will result in moving the file/directory. As a result, the operation is almost instantaneous.?

SQL 操作

按先件查詢

hive> SELECT a.foo FROM invites a WHERE a.ds='<DATE>';

將查詢數據輸出至目錄

hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='<DATE>';

將查詢結果輸出至本地目錄

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a;

選擇所有列到本地目錄?

hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a;

hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a WHERE a.key < 100;?

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/reg_3' SELECT a.* FROM events a;

hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_4' select a.invites, a.pokes FROM profiles a;

hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT COUNT(1) FROM invites a WHERE a.ds='<DATE>';

hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT a.foo, a.bar FROM invites a;

hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/sum' SELECT SUM(a.pc) FROM pc1 a;

將一個表的統計結果插入另一個表中

hive> FROM invites a INSERT OVERWRITE TABLE events SELECT a.bar, count(1) WHERE a.foo > 0 GROUP BY a.bar;

hive> INSERT OVERWRITE TABLE events SELECT a.bar, count(1) FROM invites a WHERE a.foo > 0 GROUP BY a.bar;

JOIN

hive> FROM pokes t1 JOIN invites t2 ON (t1.bar = t2.bar) INSERT OVERWRITE TABLE events SELECT t1.bar, t1.foo, t2.foo;

將多表數據插入到同一表中

FROM src

INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100

INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200

INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;

將文件流直接插入文件

hive> FROM invites a INSERT OVERWRITE TABLE events SELECT TRANSFORM(a.foo, a.bar) AS (oof, rab) USING '/bin/cat' WHERE a.ds > '2008-08-09';

This streams the data in the map phase through the script /bin/cat (like hadoop streaming). Similarly - streaming can be used on the reduce side (please see the Hive Tutorial or examples)?

實際示例

創建一個表

CREATE TABLE u_data (

userid INT,

movieid INT,

rating INT,

unixtime STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

STORED AS TEXTFILE;

下載示例數據文件,并解壓縮

wget http://www.grouplens.org/system/files/ml-data.tar__0.gz

tar xvzf ml-data.tar__0.gz

加載數據到表中

LOAD DATA LOCAL INPATH 'ml-data/u.data'

OVERWRITE INTO TABLE u_data;

統計數據總量

SELECT COUNT(1) FROM u_data;

現在做一些復雜的數據分析

創建一個 weekday_mapper.py: 文件,作為數據按周進行分割?

import sys

import datetime

for line in sys.stdin:

line = line.strip()

userid, movieid, rating, unixtime = line.split('\t')

生成數據的周信息

weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()

print '\t'.join([userid, movieid, rating, str(weekday)])

使用映射腳本

//創建表,按分割符分割行中的字段值

CREATE TABLE u_data_new (

userid INT,

movieid INT,

rating INT,

weekday INT)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t';

//將python文件加載到系統

add FILE weekday_mapper.py;

將數據按周進行分割

INSERT OVERWRITE TABLE u_data_new

SELECT

TRANSFORM (userid, movieid, rating, unixtime)

USING 'python weekday_mapper.py'

AS (userid, movieid, rating, weekday)

FROM u_data;

SELECT weekday, COUNT(1)

FROM u_data_new

GROUP BY weekday;

————————————————————————————————————————————————————

hive update delete:

關于 hive 的更新和刪除問題,csdn 曾舉辦過活動來專門討論過,
http://10773851.42qu.com/10773869
總結如下:

HIVE是一個數據倉庫系統,這就意味著它可以不支持普通數據庫的CRUD操作。CRUD應該在導入HIVE數據倉庫前完成。
而且鑒于 hdfs 的特點,其并不能高效的支持流式訪問,訪問都是以遍歷整個文件塊的方式。hive 0.7 之后已經支持
索引,但是很弱,尚沒有成熟的線上方案。

關于 hive 的刪除和更新有如下辦法:

一、行級的更新和刪除:通過 hbase 進行。
數據保存在HBase中,Hive從HBase中查詢數據,這個官方提供 hive-hbase-handler 插件支持,通過 thrift hive-service 進行通信

優點:
適用性比較普遍,單行和批量修改都可以使用,并且修改也比較方便;修改也比較快速。

缺點:
(1)查詢的時候,性能較數據保存在HDFS的場景慢一些。
(2)通過 hbase 刪除可能會有延時導致臟數據,因為 habse 刪數據是先邏輯刪除,然后等待下一次 compact 再物理刪除。
(3)這種方式產生的 hive 表將不能再更改表結構,alt table 操作直接拋異常。
(4)尚沒有驗證這種方案在大數據量的場景下的可行性。


二、批量更新和刪除:可以相應的使用 insert as select 的方式來實現。

不更改HIVE的設計,利用HiveQL實現update和delete,雖然效率比較低,但是也可以實現update和delete操作。

delete操作實現:
用select語句篩選出不delete的數據,用這些數據覆蓋原來的表,如我們想刪除score在60分以下的行,可以用:
INSERT OVERWRITE students SELECT students.* from students where score >= 60;

update操作的實現:
將要更新的數據從數據庫中選出放入一個本地臨時的文件中,如要更新60分以下的學生的數據,可以使用:
INSERT OVERRITE LOCAL DIRECTORY "/tmp/students.1" SELECT students.* from students where score < 60;
刪除要更新的數據:
INSERT OVERWRITE students SELECT students.* from students where score >=60;
編輯要更新的數據文件或者將要修改的數據放入數據庫表后再修改,修改結束后載入到表中:LOAD DATA INPATH "/tmp/students.1" INTO TABLE students如果對表進行分區,上述的update和delete速度會快一些。

缺點:
同一個操作掃描了 2 遍 hdfs,還不如 MR 批量更新來得快和簡潔。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Hive常用的SQL命令操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲aⅴ乱码精品成人区 | 免费毛片视频网站 | 欧洲熟妇的性久久久久久 | h网站在线 | 免费在线观看一区 | 美女被啪啪 | 99国产成人精品 | 亚洲精品中文字幕在线 | www.狠狠插| 狠狠干夜夜干 | 天堂福利视频 | 日韩在线观看你懂的 | 久久精品a亚洲国产v高清不卡 | 久久午夜精品人妻一区二区三区 | 国产性一乱一性一伧一色 | 丰满少妇中文字幕 | 女性向片在线观看 | 中文久久乱码一区二区 | 人妻换人妻a片爽麻豆 | 中文字幕永久在线观看 | 国产一区二区三区久久 | 日韩久久成人 | 亚洲综合五区 | 在线观看免费成人 | 亚洲天堂av影院 | 超碰国产97 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 国产精品伦一区二区三区 | 国产女女做受ⅹxx高潮 | 欧美男女交配 | 亚洲精品免费看 | 日韩精品毛片 | 国产精品卡一 | 邻居校草天天肉我h1v1 | 精品国产无码在线 | 啪啪福利视频 | 中文字幕人成乱码熟女香港 | 综合一区二区三区 | 日韩精品在线观看视频 | 久久青青视频 | 天堂网在线中文 | 亚洲AV无码成人精品国产一区 | 狠狠的干狠狠的操 | 老女人乱淫 | 玖玖成人| 激情片| 五月婷婷六月香 | 超碰最新在线 | 超碰997 | 少妇一级片 | 男人综合网 | 亚洲av无码一区二区乱子伦as | 亚洲 欧美 中文字幕 | 国产tv在线观看 | jizz欧美| 3d动漫精品h区xxxxx区 | 国产学生美女无遮拦高潮视频 | 秋霞免费av | 国产乱码av | 白丝女仆被免费网站 | 日韩中文字幕第一页 | 少妇色 | 91视频美女| 夫妻毛片 | 亚洲 精品 综合 精品 自拍 | 欧美亚洲综合视频 | 四虎免费看黄 | 亚洲不卡中文字幕无码 | 性xxxxbbbb| 久久在线看 | 久久中文字幕在线 | 91精品大片 | 深夜福利免费观看 | 99精品视频在线免费观看 | 一起射导航 | 欧美天堂久久 | 亚洲蜜桃av| 一本久道久久 | a级在线观看 | 成人av无码一区二区三区 | 91久久人人 | 美女扒开尿口来摸 | 多毛的亚洲人毛茸茸 | 泽村玲子av| 国产精品电影一区 | 久久国产电影 | 黄色wwwww | 精品国自产拍在线观看 | 五月色婷婷综合 | 久久久久久久人妻无码中文字幕爆 | 亚洲巨乳| 91鲁| 中文字幕在线播 | 69精品无码成人久久久久久 | 日韩毛片网站 | √资源天堂中文在线视频 | 我要色综合天天 | 亚洲 欧美 激情 小说 另类 | 亚洲无码精品国产 |