Hive的学习笔记1-hive的安装和mysql的连接
来源:互联网 发布:家庭资产负债表 知乎 编辑:程序博客网 时间:2024/06/05 03:13
本文为传智播客Hadoop八天——第六天学习笔记
1. 安装hive
从http://hive.apache.org/downloads.html 下载合适的版本,目前hive的最高版本是2.0.0。当使用2.x时,需要初始化元数据所在的数据库,http://blog.csdn.net/beidiqiuren/article/details/53056270所以选了1.2.1版。
解压后放入合适的路径。配置环境变量:
sudo gedit /etc/profile
export HIVE_HOME=/home/devil/soft/hive-1.2.1export PATH=$PATH:$HIVE_HOME/bin
此时在命令行键入hive就可以进入Hive的外壳环境(shell)。
hive>
2.安装mysql
hive本身自带数据库,但是会在打开命令行的当前目录下见表,不适合管理和使用。因此大都使用hive在mysql中建表。
sudo apt-get install mysql-serverapt-get isntall mysql-clientsudo apt-get install libmysqlclient-dev
登录mysql(root为mysql初始的用户名,123是我自己设的密码)
mysql -uroot -p123
3.将hive和mysql组合
将hive/conf/hive-default.xml.template复制一份,命名为hive-site.xml
打开hive-site.xml,可以将原本的内容全部删除
替换为以下内容
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!--mysql的用户名--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <!--mysql的密码--> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123</value> </property></configuration>
将mysql的驱动jar包拷到hive的解压目录下的lib文件夹中。这时候hive就可以和mysql一起用了(。・`ω´・)
4.hive的实际使用
使用hive创建一个表,表有三列,分别为phonenbr(string类型),upflow(int类型),downflow(int类型)
create table t_flow(phonenbr string,upflow int,downflow int)row format delimitedfields terminated by '\t';
上面的声明指明了t_flow这个表所能上传的数据文件的每一行用制表符分开作为字段中的值。
上传一个文件作为表中的数据
13887654321 220 330
13997654321 230 320
13777654321 240 310
13667654321 250 300
例如上面格式的文件。
load data local inpath '/home/devil/example/cc.txt' overwrite into table t_flow;
local 代表的是本地路径,也可以上传hdfs中的文件。
overwrite代表上传是删除表对应目录中已有的所有文件。
查询表中的数据
select * from t_flow;
有时候查询不能使用hive自带的函数来表示,此时可以使用UDF自己定义脚本。
package cn.bigdata;import java.util.HashMap;import org.apache.hadoop.hive.ql.exec.UDF;public class PhoneNbrToArea extends UDF { private static HashMap<String,String> areaMap= new HashMap<>(); static{ areaMap.put("1388", "beijing"); areaMap.put("1399", "tianjin"); areaMap.put("1366", "nanjing"); } public String evaluate(String pnb){ String result = areaMap.get(pnb.substring(0,4))==null? (pnb+" huoxing"):(pnb+" "+areaMap.get(pnb.substring(0,4))); return result; }}
将上面的java文件导成jar包,上传到hive中。
add jar /home/devil/example/hiveudf.jar;
为这个jar包中的脚本方法起一个别名
create temporary function getarea as 'cn.bigdata.PhoneNbrToArea';
使用这个udf
select getarea(phonenbr),upflow,downflow from t_flow;
- Hive的学习笔记1-hive的安装和mysql的连接
- Hive 学习笔记(1)---hive的配置
- Hive的安装配置和连接mysql以及基础操作
- Hive学习笔记 6 Hive的JDBC连接
- HIVE的学习笔记
- Hive的学习笔记
- Hive学习笔记 --- Hive的数据类型
- Hive学习笔记 --- Hive的Beeline使用
- Hive学习笔记 --- Hive分区表的操作
- Hive学习笔记 2 Hive的数据类型
- hive学习笔记-hive的基本语法
- hive 和 mysql 的安装 metastor 配置
- hive的安装和操作笔记-day1
- Hive-2-Hive的安装
- 一脸懵逼学习Hive的安装
- Hive的安装和配置
- hive的安装和配置
- hive 的介绍和安装
- Oracle rac配置Weblogic数据源(实例名及URL的选择)
- javascript中json数据添加元素
- Mysql的最佳优化经验20多条
- 前端学习(六)
- node js 学习笔记(一) 常用模块介绍
- Hive的学习笔记1-hive的安装和mysql的连接
- mysql创建用户两次授权
- 关于iframe中datagrid的高度自适应
- design support library八大模块
- iOS开发网络篇—HTTP协议
- Easyui Datagrid自动调整行号大小
- 使用Retrofit2 RxJava 文件上传
- c++ std::bind用法小结。
- in a frame because it set 'X-Frame-Options' to 'DENY'.