1、安装hive【安装hive之前必须安装好mysql】
1.1 把hive的压缩包解压。
1.2 产生一个文件
cp conf/hive-default.xml.template conf/hive-site.xml
1.3 把hive-site.xml中<configuration></configuration>中的内容清空。
1.4 在里面添加如下内容,如下配置的意义在于metastore的数据存放到mysql中:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.62.1:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>mysql用户名</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql密码</value>
</property>
1.5 把mysql的驱动jar包放到hive的lib目录下。
1.6 执行bin/hive脚本,进入hive的命令行。
2、操作hive
2.1 创建内部表
create table t1(name string, time int, page string) row format delimited fields terminated by '\t';
2.2 导入数据【批量】
2.2.1 从linux导入文件到hive表中:
//把linux上的文件/root/visits上传到HDFS的t1目录中。
load data local inpath '文件路径' into table t1;
******导入数据的时候,可以通过load data这种语法导入,也可以使用hdfs dfs -put直接上传数据到t1目录中。
******如果上传的数据格式与t1的表结构不一致,那么显示的时候,不合适的数值显示为NULL。
2.2.2 从hdfs导入文件到hive表中:
load data inpath 'hdfs中的文件路径' into table t1;
******从hdfs导入到hive表中,会把原始数据移动到hive表的目录下,不建议这么做。!!!!!
2.3 读模式与写模式
mysql:写模式,指的是写入数据的时候做校验,有利于存储的数据的规范,但是影响插入速度。
hive:读模式,指的是写入数据不做校验,有利于批量导入。
2.4 创建外部表
******数据不在hive的管辖范围内。删除表的时候,不会删除数据。
create external table ip(列名 列类型, 列名 列类型) row format delimited fields terminated by '\t' location '指定数据文件所在位置';
******使用外部表的时候,创建表之后可以不用导入数据,因为数据在外部的目录下已经存在了。
2.5 函数
2.5.1 显示全部函数
show functions;
2.5.2 查询某个函数的用法
describe function xxxx;