使用Hive之基础操作

Apache Hive是一个基于HADOOP架构的数据仓库。它能够提供数据的精炼,查询和分析。可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。

变量和属性 --define,--hivevar 

[hadoop@qk conf]$ hive --define foo=name

Logging initialized using configuration in jar:file:/hadoop/hadoop-2.7.2/hive-1.1.1-bin/lib/hive-common-1.1.1.jar!/hive-log4j.properties

hive> set hivevar:foo;

hivevar:foo=name

hive> set hiveconf:foo;

hiveconf:foo is undefined as a hive configuration variable

Query returned non-zero code: 1, cause: null

hive> set foo;

foo=name

测试后可以看到,--define和--hivevar的标记结果是一致的(--hivevar从hive 0.8及以后开始支持)。使用变量有助于后期方便处理一些代码:

简单的例子,

hive> set foo;

foo=name

hive> create table tb_2(id int,${foo} string);

OK

Time taken: 0.508 seconds

hive> desc tb_2;

OK

id                      int

name                    string

Time taken: 0.42 seconds, Fetched: 2 row(s)

hive>

通过变量设置所有的${foo}都可以当替代name。

来看看--hiveconf,一般hiveconf配置的参数我们都可以在hive-default.xml中看到,我们在配置文件中查找到:


其值为256

在hive cli中可以看到:

hive> set hiveconf:hive.spark.client.secret.bits;

hiveconf:hive.spark.client.secret.bits=256

hive>

所以在使用hive前,仅本次使用一些特殊的配置参数,可以通过登录修改:

[hadoop@qk ~]$ hive --hiveconf hive.spark.client.secret.bits=257

Logging initialized using configuration in jar:file:/hadoop/hadoop-2.7.2/hive-1.1.1-bin/lib/hive-common-1.1.1.jar!/hive-log4j.properties

hive> set hiveconf:hive.spark.client.secret.bits;

hiveconf:hive.spark.client.secret.bits=257

hive> exit;

[hadoop@qk ~]$ hive

Logging initialized using configuration in jar:file:/hadoop/hadoop-2.7.2/hive-1.1.1-bin/lib/hive-common-1.1.1.jar!/hive-log4j.properties

hive> set hiveconf:hive.spark.client.secret.bits;

hiveconf:hive.spark.client.secret.bits=256

hive>


退出再登录和在hive-conf.xml中,其值还是256。同样的,我们也可以增加新的hivecong值(hive0.8以上版本支持)。

[hadoop@qk ~]$ hive --hiveconf qk=10

Logging initialized using configuration in jar:file:/hadoop/hadoop-2.7.2/hive-1.1.1-bin/lib/hive-common-1.1.1.jar!/hive-log4j.properties

hive>set hiveconf:qk;

hiveconf:qk=10

[hadoop@qk conf]$ cat hive-default.xml |grep qk

[hadoop@qk conf]$

create table tb_3 (id int);

OK

Time taken: 0.834 seconds

hive>insert into tb_3 values( ${hiveconf:qk});

Query ID = hadoop_20170324151313_e17e76fc-30c2-458a-a2b0-baeddbafed3b

Total jobs = 3

Launching Job 1 out of 3

Number of reduce tasks is set to 0 since there's no reduce operator

Job running in-process (local Hadoop)

2017-03-24 15:13:47,502 Stage-1 map = 100%,  reduce = 0%

Ended Job = job_local1856010364_0001

Stage-4 is selected by condition resolver.

Stage-3 is filtered out by condition resolver.

Stage-5 is filtered out by condition resolver.

Moving data to: hdfs://192.168.1.230:9000/user/hive/warehouse/tb_3/.hive-staging_hive_2017-03-24_15-13-43_337_5216464255433775132-1/-ext-10000

Loading data to table default.tb_3

Table default.tb_3 stats: [numFiles=1, numRows=1, totalSize=3, rawDataSize=2]

MapReduce Jobs Launched:

Stage-Stage-1:  HDFS Read: 3 HDFS Write: 74 SUCCESS

Total MapReduce CPU Time Spent: 0 msec

OK

Time taken: 4.621 seconds

hive>select * from tb_3;

OK

10

Time taken: 0.104 seconds, Fetched: 1 row(s)

注意:让参数永久生效最直接的办法还是修改hive-cong.xml文件。

注意:system,hiveconf,hivevar对命名空间提供读写,但是env只有读权限。

hive>set env:HOME;

env:HOME=/home/hadoop

hive> set env:HOME=/home/hadoop;

env:* variables can not be set.

Query returned non-zero code: 1, cause: null

“一次使用”命令:hive -e 

[hadoop@qk ~]$ hive -e "select * from tb_3";

Logging initialized using configuration in jar:file:/hadoop/hadoop-2.7.2/hive-1.1.1-bin/lib/hive-common-1.1.1.jar!/hive-log4j.properties

OK

10

Time taken: 1.441 seconds, Fetched: 1 row(s)

(-S开启静默模式,去掉"OK" ,"Time taken"信息) ,需注意和-e的先后顺序。此例中,hive会将输出写入标准输出中,也就是本地文件系统而不是HDFS中。

[[hadoop@qk ~]$ hive -S -e "select * from tb_3" > result.ext

[hadoop@qk ~]$ cat result.ext

10

技巧:

当需要在hive中获取set的某项参数时而又不是很清楚参数项时,可以使用一次命令,比如:

[hadoop@qk ~]$ hive -S -e "set" |grep HOME

env:HADOOP_COMMON_HOME=/hadoop/hadoop-2.7.2

env:HADOOP_HDFS_HOME=/hadoop/hadoop-2.7.2

env:HADOOP_HOME=/hadoop/hadoop-2.7.2

env:HADOOP_HOME_WARN_SUPPRESS=true

env:HADOOP_MAPRED_HOME=/hadoop/hadoop-2.7.2

env:HADOOP_YARN_HOME=/hadoop/hadoop-2.7.2

env:HIVE_HOME=/hadoop/hadoop-2.7.2/hive-1.1.1-bin

env:HOME=/home/hadoop

env:JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64

env:MODULESHOME=/usr/share/Modules

env:SQOOP_HOME=/hadoop/hadoop-2.7.2/sqoop-1.4.6.bin__hadoop-1.0.0

env:YARN_HOME=/hadoop/hadoop-2.7.2

从文件中执行HIVE查询: -f,(当进入hive后使用source)

[hadoop@qk ~]$ cat select.sql

select * from tb_3;

select * from tb_3

[hadoop@qk ~]$ hive -S -f select.sql

10

10

[hadoop@qk ~]$ hive -S

hive> source select.sql;

10

10

另外,hive还有一个其他数据库系统没有的功能,Tab自动补全,当你在hive中准备敲击select,当敲到前几个字符时就可以tab进行自动补全,快试试吧。

执行shell命令,命令前加上!并以;结尾。

hive> ! ls -ltr LICENSE.txt;

-rw-r--r--. 1 hadoop hadoop 15429 Nov 14  2014 LICENSE.txt

hive>

在hive内部执行dfs命令

hive> dfs -ls -R /user;

drwxr-xr-x  - hadoop supergroup          0 2017-03-22 18:25 /user/hadoop

drwxr-xr-x  - hadoop supergroup          0 2017-03-22 18:18 /user/hadoop/wc-in

-rw-r--r--  1 hadoop supergroup          8 2017-03-22 16:27 /user/hadoop/wc-in/a.txt

-rw-r--r--  2 hadoop supergroup        11 2017-03-22 16:27 /user/hadoop/wc-in/b.txt

-rw-r--r--  1 hadoop supergroup          8 2017-03-22 17:40 /user/hadoop/wc-in/c.txt

-rw-r--r--  1 hadoop supergroup          3 2017-03-22 17:41 /user/hadoop/wc-in/d.txt

drwxr-xr-x  - hadoop supergroup          0 2017-03-22 18:25 /user/hadoop/wc-out

-rw-r--r--  1 hadoop supergroup          0 2017-03-22 18:25 /user/hadoop/wc-out/_SUCCESS

-rw-r--r--  1 hadoop supergroup        26 2017-03-22 18:25 /user/hadoop/wc-out/part-r-00000

drwxr-xr-x  - hadoop supergroup          0 2017-03-17 18:40 /user/hive

drwxr-xr-x  - hadoop supergroup          0 2017-03-24 15:12 /user/hive/warehouse

drwxr-xr-x  - hadoop supergroup          0 2017-03-24 11:53 /user/hive/warehouse/tb_1

drwxr-xr-x  - hadoop supergroup          0 2017-03-24 14:44 /user/hive/warehouse/tb_2

drwxr-xr-x  - hadoop supergroup          0 2017-03-24 15:13 /user/hive/warehouse/tb_3

-rwxr-xr-x  1 hadoop supergroup          3 2017-03-24 15:13 /user/hive/warehouse/tb_3/000000_0

drwxr-xr-x  - hadoop supergroup          0 2017-03-17 18:40 /user/hive/warehouse/test.db

drwxr-xr-x  - hadoop supergroup          0 2017-03-20 11:22 /user/hive/warehouse/wh301.db

用“--”进行hive脚本的注释

[hadoop@qk ~]$ cat select.sql

--select * from tb_3;

select * from tb_3

[hadoop@qk ~]$ hive -S -f select.sql

10

[hadoop@qk ~]$

将两条查询中的一个进行注释。

一般的,我们在hive进行查询时,字段一般都默认不显示,这是为什么呢?

因为在hive-conf.xml中将相关的参数进行了设置: hive.cli.print.header;


hive>set hiveconf:hive.cli.print.header;

hiveconf:hive.cli.print.header=false

hive> select * from tb_3;

OK

10

Time taken: 1.145 seconds, Fetched: 1 row(s)

hive> set hiveconf:hive.cli.print.header=true;

hive>  set hiveconf:hive.cli.print.header;

hiveconf:hive.cli.print.header=true

hive> select * from tb_3;

OK

tb_3.id

10

Time taken: 0.107 seconds, Fetched: 1 row(s)

最后也可以在hive-default.xml中设置。

你也可以参考main手册使用hive的基础操作命令。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容