Hive的学习笔记1-hive的安装和mysql的连接
2016-04-28 14:56
645 查看
本文为传智播客Hadoop八天——第六天学习笔记
解压后放入合适的路径。配置环境变量:
此时在命令行键入hive就可以进入Hive的外壳环境(shell)。
登录mysql(root为mysql初始的用户名,123是我自己设的密码)
打开hive-site.xml,可以将原本的内容全部删除
替换为以下内容
将mysql的驱动jar包拷到hive的解压目录下的lib文件夹中。这时候hive就可以和mysql一起用了(。・`ω´・)
上面的声明指明了t_flow这个表所能上传的数据文件的每一行用制表符分开作为字段中的值。
上传一个文件作为表中的数据
13887654321 220 330
13997654321 230 320
13777654321 240 310
13667654321 250 300
例如上面格式的文件。
local 代表的是本地路径,也可以上传hdfs中的文件。
overwrite代表上传是删除表对应目录中已有的所有文件。
查询表中的数据
有时候查询不能使用hive自带的函数来表示,此时可以使用UDF自己定义脚本。
将上面的java文件导成jar包,上传到hive中。
为这个jar包中的脚本方法起一个别名
使用这个udf
1. 安装hive
从http://hive.apache.org/downloads.html 下载合适的版本,目前hive的最高版本是2.0.0。但是我使用的时候总是莫名报错QAQ。所以选了1.2.1版。解压后放入合适的路径。配置环境变量:
sudo gedit /etc/profile
export HIVE_HOME=/home/devil/soft/hive-1.2.1 export PATH=$PATH:$HIVE_HOME/bin
此时在命令行键入hive就可以进入Hive的外壳环境(shell)。
hive>
2.安装mysql
hive本身自带数据库,但是会在打开命令行的当前目录下见表,不适合管理和使用。因此大都使用hive在mysql中建表。sudo apt-get install mysql-server apt-get isntall mysql-client sudo 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 delimited fields 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;
相关文章推荐
- Mysql的最佳优化经验20多条
- 测试mysql 是否连接成功
- mysql数据库的时候无法输入中文
- 用MySQL实现微博关注关系的方案分析
- mysql支持的数据类型
- 跟我一起学习MySQL技术内幕(第五版):(第二章学习日记12)
- JDBC连接测试
- mysql表类型
- win7下安装MySQL和myODBC
- 修改订单的收货时间(MySQL)脚本
- 查看MySQL数据库各表大小
- mysql避免插入重复记录
- Mysql(四)- 存储引擎和事务,备份和恢复,索引,存储过程
- mysql安装最后一步error nr.1045解决方法
- mysql主从复制(replication)
- 深入Mysql字符集设置[精华结合]
- mysql提示错误#42000You have an error in your SQL syntax; check the manual that corresponds
- mysql慢查询设置
- mysql 中 character set 与 collation 的点滴理解(collation即比对方法,用于对应字符集的数据集如何排序以及字符串的比对规则)
- MySql:charset和collation的设置