1、hive就是对hdfs的数据进行mapreduce操作。hive就是一个数据仓库,运行时元数据信息存储在关系型数据库。
2、
1、hive上传并解压。将mysql-connector放入hive的lib下,环境变量添加上。 记得装个mysql(yum install mysql,开启mysqld服务,授权。)
2、将hive-xxx(忘记了好像是tem什么的).xml改为hive-site.xml。删除其中的property部分改为:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node02:3306/hive_remote?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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123</value>
</property>
3、删除/opt/soft/hadoop-2.6.5/share/hadoop/yarn/lib/下的,并将hive中的该包放入。
4、完成,hive命令使用客户端。
3、
首先,MetaStore Server 处与之前无改变。Client处只添加server连接信息和路径即可。
4、启动服务端:hive --service metastore
5、服务端开启:hive
三、HIVE数据结构
注意其中的strut_type 结构体。类似java中的类,可包含多种类型的属性。
建表语句:注意属性前不要加空格
create table psn
(
id int,
name string,
likes array<string>,
address map<string,string>
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':';
注意:查询表的详细元数据信息可以使用desc formatted psn(查询的表明);
实战中 insert into ... values基本不用。
插入数据语句:load data local inpath '/root/data/data' into table psn;此为从所在本地加载数据插入数据库。
使用select * from psn;查看数据。
注意:我使用hdfs dfs -put data /user/hive/warehouse/psn/data2在表目录下再添加文件后,再执行select发现data2的数据也在展示列!!!说明两件事:1、Hive展示是读取表目录下的文件执行。2、有一些默认配置使hive能够访问hdfs.
官网片段(从此可以看出来环境变量是必须要配置的):
外部表创建:下面第一个为外部表,第二个为内部表。内部表产生在了配置文件中配置的目录,而外部表是按照写sql自定义的
create external table psn2
(
id int,
name string,
likes array<string>,
address map<string,string>
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':'
location '/usr/';
注意,内部表与外部表再删除时都会删除Hive表信息,Mysql元信息。但是内部表会删除路径下的数据文件。而外部表不会。