Hive学习笔记2

  • Hive 的数据导入: 可以使用Load命令导入,也可以使用Sqoop组件导入数据。
  • Hive不支持insert插入单条语句
  • Hive的数据查询
  • Hive的Java客户端和自定义函数

Hive执行load导入数据。

load data local inpath ‘/root/data/student01.txt’ into table t2;

local 表示数据从本地操作系统中导入。如果不写local表示从hdfs中导入。

local data local inpath ‘/root/data/student02.txt’ into table t3;

将/root/data 下的所有数据导入t3表中,并且覆盖原来的数据 load data local inpath ‘/root/data/’ overwrite into table t3

将HDFS中,/input/student01.txt导入到t3 load data inpath ‘/input/student01.txt’ overwrite into table t3;

load data local inpath ‘/root/data/data1.txt’ into table partition_table partition (gender=’M’);

Sqoop 数据的导入和导出

关于sqoop的导入和导出很简单,直接下载压缩包,然后解压,设置两个环境变量就可以。

设置第一个环境变量:

  • export HADOOP_COMMON_HOME=….(hadoop的安装目录)
  • export HADOOP_MAPRED_HOME=….(MapReduce的目录,这个目录和hadoop目录一般一样)
  1. 使用Sqoop导入Oracle数据到HDFS中:
    ./sqoop import –connect jdbc:oracle:thin:@192.168.56.101:1521:orcl –username scott –password tiger –table emp –columns ‘empno, ename, job, sal, deptno’ -m 1 –target-dir ‘/sqoop/emp’
    但是这样指向会报错,因为需要jdbc驱动,需要把oracle的jdbc传入到sqoop的lib目录下。
    这样就会成功执行sqoop的数据导入和导出,整个执行过程就是通过MapReduce来完成的,
  2. 使用sqoop导入oracle数据到Hive中
    ./sqoop import –hive-import –connect jdbc:oracle:thin:@192.168.56.101:1521:orcl –username scott –password tiger –table emp -m 1 –columns ‘empno,ename,job,sal,deptno’
  3. 使用sqoop导入oracle数据到Hive中,并且指定表名
    ./sqoop import –hive-import –connect jdbc:oracle:thin:@192.168.56.101:1521:orcl –username scott –password tiger –table emp -m 1 –columns ‘empno,ename,job,sal,deptno’ –hive-table emp1
  4. 使用sqoop导入oracle数据到hive表中,并使用where条件
    ./sqoop import –hive-import –connect jdbc:oracle:thin:@192.168.56.101:1521:orcl –username scott –password tiger –table emp -m 1 –columns ‘empno,ename,job,sal,deptno’ –hive-table emp1 –where ‘DEPTNO=10’
  5. 使用sqoop导入oracle数据到hive中,并使用查询语句
    ./sqoop import –hive-import –connect jdbc:oracle:thin:@192.168.56.101:1521:orcl –username scott –password tiger -m 1 –query ‘SELECT * FROM EMP WHERE SAL<2000 AND $CONDITIONS’ –target-dir ‘/sqoop/emp5’ –hive-table emp5
    这里需要注意的是$CONDITIONS
  6. 使用sqoop将hive中的数据导出到oracle数据库中。
    ./sqoop export –connect jdbc:oracle:thin:@192.18/56.101:1521:orcl –username soctt –password tiger -m 1 –table MYEMP –export-dir …..

Hive的数据查询

在hive中进行数据操作的时候,总是将查询转换成一个MapReduce任务进行执行,但是对于简单的任务是没有必要转成一个MapReduce任务执行的,这个时候就可以配置一个fetch task功能,让fetch task功能支持简单的数据的操作。

配置方式有以下几种:

  • 在hive的命令提示符下面执行:set hive.fetch.task.conversion=more;
  • 在启动hive命令提示符的时候,加一个参数也可以开启这个功能:hive –hiveconf hive.fetch.task.conversion=more
  • 修改hive-site.xml文件

前两种方式都可以配置这个功能,但是这种配置都是临时的。可以修改hive-site.xml文件使其永久有效。

修改hive-site.xml文件,加一行属性:

<property>
<name>hive.fetch.task.conversion</name>
<value>more</value>
</property>

Hive的函数:

  • 内置函数
  • 自定义函数

数学函数:

  • round 四舍五入
  • ceil 向上取整
  • floor 向下取整

select round(45.926, 2); 45.926保留两位小数,最终结果是45.93

字符函数:

  • lower
  • upper
  • length
  • concat
  • substr
  • trim
  • lpad
  • rpad

select lower(‘Hello WORLD’), upper(‘hhhh’) select length(‘HelloWorld’) ….
lpad:左填充 rpad:右填充
select lpad(‘abcd’, 10, ‘’), rpad(‘abcd’, 10, ‘’)
收集函数

  • size

size(map(<key, value>, <key, value>));

转换函数

  • cast

select cast(1 as bigint); select cast(‘2015-08-10’ as date);

日期函数

  • to_date
  • year
  • month
  • day
  • weekofyear
  • datediff
  • date_add
  • date_sub

条件函数

  • coalesce:从左到右返回第一个不为null的值
  • case … when … : 条件表达式

聚合函数:

  • count
  • sum
  • min
  • max
  • avg

表生成函数

  • explode

Hive的表连接

  • 等值连接
  • 不等值连接
  • 外连接
  • 自连接

等值连接:

select e.empno, e.ename, e.sal, e.dname from emp e, dept d where e.deptno=d.deptno;

不等值连接:

外连接:

通过外连接可以将对于连接条件不成立的记录任然包含在最后的结果中:其中分成:

  • 左外连接
  • 右外连接

Hive的子查询:

Hive的java客户端操作:

首先需要启动Hive远程服务:hive –service hiveserver

  • JDBC
  • Thrift Client

Hive的JDBC客户端操作:

  • 获取连接
  • 创建运行环境
  • 执行HQL
  • 处理结果
  • 释放资源

hive-jdbc-…jar 这个就是hive的jdbc文件。

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

推荐阅读更多精彩内容

  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,699评论 0 2
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx阅读 8,319评论 0 16
  • 1.PLSQL入门 Oracle数据库对SQL进行了扩展,然后加入了一些编程语言的特点,可以对SQL的执行过程进行...
    随手点灯阅读 595评论 0 8
  • 1、错误定律:别人都不对,那就是自己的错。 多层次、全方面的考虑问题,不要一根筋走到底,那么黄河的水都洗不起你的问...
    阿米巴中的那些事阅读 768评论 0 6
  • 我是一颗深藏幽谷的红橙 外表粗糙 内心却甜美的醉人 苦尽这四季风霜 只为你保留这一份无人能品的甘纯
    得一生二阅读 470评论 0 1