Hive入门学习随笔(二)

====使用Load语句执行数据的导入

--将操作系统上的文件student01.txt数据导入到t2表中

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

--将操作系统上/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;

--将操作系统上的data1.txt导入到分区t3表中

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

===使用Sqoop实现数据的导入

Sqoop是一个工具,用来进行Hadoop与关系型数据之间的批量数据的导入和导出。

Sqoop的安装非常简单,只需要从网站上下载Sqoop的安装包,并配置环境变量即可。

官网:http://sqoop.apache.org

环境变量:

由于Sqoop是基于Hadoop的,所以需要通过环境变量HADOOP_COMMON_HOME来指明Hadoop的安装目录。

由于Sqoop是把作业最终转换成MapReduce的作业进行提交执行,所以,需要通过环境变量HADOOP_MAPRED_HOME来指明MapReduce的Jar目录。

--使用Sqoop导入Oracle数据到HDFS中。

./sqoop import --connect jdbc:oracle:thin:@192.168.1.36:1521:orcl --username xxx --password xxx --table emp --columns ‘empno,ename,job,sal‘ -m 1 --target-dir ‘/sqoop/emp‘

--使用Sqoop导入Oracle数据到Hive中。

./sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.1.36:1521:orcl --username xxx --password xxx --table emp --columns ‘empno,ename,job,sal‘ -m 1

--使用Sqoop导入Oracle数据到Hive中,并且指定表名

./sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.1.36:1521:orcl --username xxx --password xxx --table emp --columns ‘empno,ename,job,sal‘ -m 1  --hive-table emp1

--使用Sqoop导入Oracle数据到Hive中,并且制定Where条件

./sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.1.36:1521:orcl --username xxx --password xxx --table emp --columns ‘empno,ename,job,sal‘ -m 1  --hive-table emp1 --where ‘DEPTNO=10‘

--使用Sqoop导入Oracle数据到Hive中,并且使用查询语句

./sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.1.36:1521:orcl --username xxx --password xxx --table emp --columns ‘empno,ename,job,sal‘ -m 1  --hive-table emp1 --query ‘SELECT * FROM EMP WHERE SAL<2000 $CONDITIONS‘ --target-dir ‘/sqoop/emp5‘ --hive-table emp5

--使用Sqoop将Hive中的数据导出到Oracle中。

./sqoop export --connect jdbc:oracle:thin:@192.168.1.36:1521:orcl --username xxx --password xxx -m 1 --table MYEMP --export-dir HDFS路径

Sqoop在业务系统中有着非常重要的作用,一般的应用场景是下面这个样子。

====Hive的数据查询

--查询所有员工的所有信息

select * from emp;

--查询员工信息:员工号 姓名 月薪

select empno, ename, sal from emp;

--查询员工信息:员工号 姓名 月薪 年薪 奖金 年收入

select empno, ename, sal, sal*12 comm, sal*12+nvl(comm, 0) from emp;

--查询奖金为null的员工

select * from emp where comm is null;

--使用distinct来去掉重复记录

select distinct deptno from rmp;

====Hive简单查询的FetchTask功能

从Hive0.10.0版本开始支持。开始了这个功能以后,我们执行一条简单的语句(没有函数、排序等)不会生成一个MapReduce作业。

hive-site.xml配置内容:

====在查询中使用过滤

--查询10号部门的员工

select * from emp where deptno=10;

--查询名称为KING的员工

select * from emp where ename=‘KING‘;

--查询部门号是10,薪水小于2000的员工

select * from emp where deptno=10 and sal<2000;

--模糊查询:查询名字以S开头的员工

select empno, ename, sal from emp where ename like ‘S%‘;

--模糊查询:查询名字含有下划线的员工

select empno, ename, sal from emp where ename like ‘%\\_%‘;

注意:下划线在模糊查询中有特殊的含义,代表任意字符。所以,语句中需要转义符进行标记

====在查询中使用排序

--查询员工信息:员工号 姓名 月薪 按照月薪排序

select empno, ename, sal from emp order by sal desc;

※order by后面可以使用:列名、表达式、别名、序号。

另外,如果想使用需要进行排序的时候,需要设置下面的环境变量。

set hive.groupby.orderby.position.alias=true;

※null排序:升序时null排最前面,降序时null排最后面,一般用法都是将null转换成0之后进行排序。

====Hive的函数

内置函数可以直接调用。也可以通过编写java程序来自定义函数

--内置函数

--自定义函数

①、自定义UDF需要继承org.apache.hadoop.hive.ql.UDF

需要实现evaluate函数,evaluate函数支持重载。

②、将程序打包放到目标机器上去,进入Hive客户端添加jar包

命令例:hive>add jar /root/udfjar/udf_text.jar

③、创建临时函数:CREATE TEMPORARY FUNCTION <函数名> AS ‘java类名‘

命令例:hive>CREATE TEMPORARY FUNCTION myconcat AS ‘demo.udf.ConcatString‘;

④、自动以函数使用。select <函数名> from table;

⑤、销毁临时函数:DROP TEMPORARY FUNCTION <函数名>

====Hive表连接

Hive的表连接分为:等值连接、不等值连接、外链接、自连接

--等值连接

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

--不等值连接

select e.empno, e.ename, e.sal, s.grade from emp e, salgrade s where e.sal between s.local and s.hisal;

--外链接(包括左连接和右连接)

select d.deptno, d.dname, count(e.empno) from emp e right outer join dept d on (e.deptno=d.deptno) group by d.deptno, d.dname;

--自连接

核心:通过表的别名将同一张表视为多张表

====Hive中的子查询

hive只支持from和where子句中的子查询。

例:select e.ename from emp e where e.deptno in (select d.deptno from dept d where d.dname=‘SALES‘ or d.dname=‘KING‘);

注意:子查询中的空值:如果子查询返回的结果集中含有空值得话,我们不能使用not in,但是可以使用in。

====Hive的JDBC客户端操作

①、启动Hive远程服务。命令:#hive --service hiveserver

②、JDBC客户端操作

====Hive的Thrift Java客户端操作

--END--

时间: 2024-10-31 18:40:52

Hive入门学习随笔(二)的相关文章

OpenStack 入门学习之二:在CentOS 6.5上使用RDO单机安装icehouse

本文主要介绍如何在CentOS6.5上通过RDO来安装icehouse,由于安装的过程中涉及的软件较多,以及依赖关系比较复杂,建议使用一个全新的操作系统来进行安装. 安装步骤具体如下 (1)安装操作系统 使用光盘或镜像文件安装操作系统. 分区的时候需要划分一个逻辑区,并且建立一个名称叫cinder-volumes的组.这个逻辑卷组会被cinder使用. 创建的效果类似于: 创建过程请参考:http://www.centos.org/docs/5/html/Deployment_Guide-en-

Hive入门学习--Hadoop简介

现在想要应聘大数据分析或者数据挖掘岗位,很多都需要会使用Hive,Mapreduce,Hadoop等这些大数据分析技术.为了充实自己就先从简单的Hive开始吧.接下来的几篇文章是记录我如何入门学习Hive的. 一.Hive简介 Hive是一个数据仓库基础工具,架构在Hadoop之上,能够处理Hadoop中的结构化数据.简言之,Hive和SQL是一个数据分析和处理工具,它提供了SQL查询功能,可以将SQL语句转换为Mapreduce任务运行. 既然Hive是架构在Hadoop之上的,我们就有必要简

MyBatis入门学习(二)

在MyBatis入门学习(一)中我们完成了对MyBatis简要的介绍以及简单的入门小项目测试,主要完成对一个用户信息的查询.这一节我们主要来简要的介绍MyBatis框架的增删改查操作,加深对该框架的了解.环境测试是上一节中的测试环境.在此感谢博主提供的资料. 一.通过MyBatis持久层框架完成对数据库表的增删改查操作——基于XML的实现 1.定义sql文件的映射文件,userMapper文件内容如下: <?xml version="1.0" encoding="UTF

Elasticsearch入门学习(二):简单的入门学习

一.ES一些概念 索引 _inde,文档存储的地方,类似于关系型数据中的数据库. 事实上,数据被存储和索引在分片中,索引仅仅是一个把一个或者多个分片分组在一起的逻辑空间. 索引名字必须是全部小写,不允许以下划线开头,不能包含逗号. 文档 文档id是一个字符串,与_index组合时,就可以在ElasticSearch中唯一标识一个文档.创建文档时,可以自定义_id,也可以让ES帮助自动生成. 二.使用postman入门学习 创建索引 创建索引库的格式为:使用put请求:ip:9200/{index

IOS入门学习随笔

我的IOS学习之路并非起于大学期间,而是毕业后所在公司有相关的开发业务,所以我在今年10月份开始了我的IOS之旅. 在今年6月份苹果公司推出了全新的IOS开发语言Swift,这是件让IOS程序员兴奋的事件.因为Swift不仅有新的开发体验,更可以说这次让中国程序员有了一次和世界同步的机会.在我开始接触IOS的时候,我一直在犹豫是直接从ObjectC开始啃还是直接搭上Swift这班顺风车.在我考虑了学习的渐进性和公司实际开发任务之后,我决定从ObjectC开始我的IOS学习之路. 在确定了学习方向

hive入门学习线路指导

转自:http://www.aboutyun.com/thread-7598-1-1.html hive被大多数企业使用,学习它,利于自己掌握企业所使用的技术,这里从安装使用到概念.原理及如何使用遇到的问题,来讲解hive,希望对大家有所帮助.此篇内容较多:看完之后需要达到的目标1.hive是什么2.明白hive的原理3.会使用hive4.会使用hive编程 1.hive首先我们需要hive是什么?让你真正明白什么是hive上面讲的很明白1.hive是一个数据仓库2.hive基于hadoop.总

salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex语言和java很多的语法类似,今天总结的是一些简单的Apex的变量等知识. 有如下几种常用的基本变量Integer,String,Decimal,Double,Long,Boolean,ID. 集合常用的对象:List<T>,Set<T>,Map<T>. 时间日期常用对象:Datetime,Time,Date. 其他:Object,sObject(与数据库相关

linux入门学习(二)

---恢复内容开始--- 按键 作用 Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行 Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg Ctrl+a 将光标移至输入行头,相当于Home键 Ctrl+e 将光标移至输入行末,相当于End键 Ctrl+k 删除从光标所在位置到行末 Alt+Backspace 向前删除一个单词 Shift+PgUp 将终端显示向上滚动 Shift+PgDn 将终端显示向下滚动 2) 学会利用历史输入命令 很简单,你

linux学习随笔二

一.如何使用查看帮助文档 二.内部命令与外部命令的区别 三.几个常用基础命令的学习 一.命令分为内部命令和外部命令,内部命令即shell命令,外部命令即用户命令,普通用户可以使用的.获得命令使用帮助也不一样,需要注意的是内部命令在用man查看帮助时显示的是bash的解释.对内部外部命令的理解可以分章节: 1.用户命令(/bin,/usr/bin,/usr/local/bin) 2.系统调用 3.库调用 4.特殊文件(设备文件) 5.文件格式(配置文件的语法) 6.游戏 7.杂项(Miscella