hadoop(十) - hive安装与自定义函数

一. Hive安装

Hive只在一个节点上安装即可

1. 上传tar包

2. 解压 tar -zxvf hive-0.9.0.tar.gz -C /cloud/

3. 配置mysql metastore(切换到root用户)

3.1 配置HIVE_HOME环境变量

3.2 安装mysql

查询以前安装的mysql相关包: rpm -qa | grep mysql

暴力删除这个包: rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps

安装mysql: rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm

rpm -ivh MySQL-client-5.1.73-1.glibc23.i386.rpm

执行命令设置mysql: /usr/bin/mysql_secure_installation (注意:删除匿名用户,允许用户远程连接)

登陆mysql: mysql -u root -p

4. 配置hive

cp hive-default.xml.template hive-site.xml

修改hive-site.xml(删除所有内容,只留一个<property></property>)

添加如下内容:

<property>
	  <name>javax.jdo.option.ConnectionURL</name>
	  <value>jdbc:mysql://hadoop00:3306/hive?createDatabaseIfNotExist=true</value>
	  <description>JDBC connect string for a JDBC metastore</description>
	</property>

	<property>
	  <name>javax.jdo.option.ConnectionDriverName</name>
	  <value>com.mysql.jdbc.Driver</value>
	  <description>Driver class name for a JDBC metastore</description>
	</property>

	<property>
	  <name>javax.jdo.option.ConnectionUserName</name>
	  <value>root</value>
	  <description>username to use against metastore database</description>
	</property>

	<property>
	  <name>javax.jdo.option.ConnectionPassword</name>
	  <value>123</value>
	  <description>password to use against metastore database</description>
	</property>

5. 安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下

如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)

mysql -uroot -p

#(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)

GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123‘ WITH GRANT OPTION;

FLUSH PRIVILEGES;

6. 建表(默认是内部表)

create table trade_detail(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by ‘\t‘;

建分区表:

create table td_part(id bigint, account string, income double, expenses double, time string) partitioned by (logdate string) row format delimited fields terminated by ‘\t‘;

建外部表:

create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by ‘\t‘ location ‘/td_ext‘;

7. 创建分区表

普通表和分区表区别:有大量数据增加的需要建分区表

create table book (id bigint, name string) partitioned by (pubdate string) row format delimited fields terminated by ‘\t‘;

分区表加载数据:

load data local inpath ‘./book.txt‘ overwrite into table book partition (pubdate=‘2010-08-22‘);

load data local inpath ‘/root/data.am‘ into table beauty partition (nation="USA");

select nation, avg(size) from beauties group by nation order by avg(size);

二. UDF

自定义UDF要继承org.apache.hadoop.hive.ql.exec.UDF类实现evaluate

public class AreaUDF extends UDF{

	private static Map<Integer, String> areaMap = new HashMap<Integer, String>();

	static {
		areaMap.put(1, "北京");
		areaMap.put(2, "上海");
		areaMap.put(3, "广州");
	}

	public Text evaluate(Text in){
		String result = areaMap.get(Integer.parseInt(in.toString()));
		if(result == null){
			result = "其他";
		}
		return new Text(result);
	}
}

自定义函数调用过程:

1. 添加jar包(在hive命令行里面执行)

hive> add jar /root/NUDF.jar;

2. 创建临时函数

hive> create temporary function getNation as ‘cn.itcast.hive.udf.NationUDF‘;

3. 调用

hive> select id, name, getNation(nation) from beauty;

4. 将查询结果保存到HDFS中

hive> create table result row format delimited fields terminated by ‘\t‘ as select * from beauty order by id desc;

hive> select id, getAreaName(id) as name from tel_rec;

create table result row format delimited fields terminated by ‘\t‘ as select id, getNation(nation) from beauties;

时间: 2024-10-21 01:30:06

hadoop(十) - hive安装与自定义函数的相关文章

开发HIVE的UDTF自定义函数

[Author]: kwu UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求,开发HIVE的UDTF自定义函数具体步骤如下: 1.继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,实现initialize, process, close三个方法. 2.UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(

第二十四节,自定义函数

第二十四节,自定义函数函数是将要实现的功能写在函数里,在要使用此功能的地方调用此函数即可实现功能,这样大大减少编程重复书写同样的代码,在多个要使用同样功能的地方调用函数即可不需要重复写同样的代码函数式编程最重要的是增强代码的重用性和可读性 函数的定义主要有如下要点: def:表示函数的关键字函数名:函数的名称,日后根据函数名调用函数函数体:函数中进行一系列的逻辑计算,如:发送邮件.计算出 [11,22,38,888,2]中的最大数等...参数:为函数体提供数据return:返回值:当函数执行完毕

hive添加永久自定义函数

永久自定义hive函数 1:做这件事的原因: 有一些函数是比较基础的,公用的,每次都要create temporary function麻烦了,这样的基础函数需要直接集成到hive中去,避免每次都要创建. 2:步骤 本人拥有一个账户zb_test 自定义的函数已经准备好 登陆linux账户,修改该账户的home目录下的.bashrc文件: 把CLASSPATH改成如下: export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$SQOOP_HOME/

Spark、Hadoop、Hive安装学习

1.Hive安装 http://blog.csdn.net/an342647823/article/details/46048403 2.Hadoop安装 http://www.itnose.net/detail/6182168.html 3.Spark安装 http://stark-summer.iteye.com/blog/2173219 http://ju.outofmemory.cn/entry/177769

第二十五节,自定义函数作业

1,简述普通参数.指定参数.默认参数.动态参数的区别 函数 a.def(声明自定义函数开始) b.函数名()如:f1() c.返回值return(关键字) 函数内部一旦遇到return,以下代码不在执行 d.参数 1.形式参数(定义函数时的参数),实际参数(调用函数时的参数) 2.普通参数:数量一致,一一对应 print("普通参数:数量一致,一一对应") def f1(a,b): c = a + b print(c) f1(5,5) 3.指定参数 调用函数时指定参数如:f1(p=&q

Hadoop之Hive 安装

1.  Hive mysql的metastore安装准备 把hive-0.12.0.tar.gz解压到/zzy/ # tar -zxvf hive-0.12.0.tar.gz -C /zzy    (-C 指定解包后的路径) 修改/etc/profile文件,将hive加入环境变量 # vim /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_79 export HADOOP_HOME=/itcast/hadoop-2.4.1 export HIV

第二十二章,自定义函数(C++)

#include <iostream> //要先定义,放在main方法之前,可写默认参数, int sum(int a=3); //有初始值的放在后面 int num(int b,int c=4); int main(int argc, char** argv) { std::cout<<sum()<<std::endl; std::cout<<sum(4)<<std::endl; std::cout<<num(10)<<

Hive自定义函数的学习笔记(1)

前言: hive本身提供了丰富的函数集, 有普通函数(求平方sqrt), 聚合函数(求和sum), 以及表生成函数(explode, json_tuple)等等. 但不是所有的业务需求都能涉及和覆盖到, 因此hive提供了自定义函数的接口, 方便用户扩展. 自己好像很久没接触hadoop了, 也很久没博客了, 今天趁这个短期的项目, 对hive中涉及的自定义函数做个笔记. 准备: 编写hive自定义函数前, 需要了解下当前线上hive的版本. hive --vesion 比如作者使用到的hive

Spark(十八)SparkSQL的自定义函数UDF

在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF(User- Defined Aggregation Funcation),用户自定义聚合函数,类似在group by之后使用的sum,avg等 UDTF(User-Defined Table-Generating Functions),用户自定义生成函数,有点像stream里面的flatMap 自定