1.Hive是基于hadoop的sql解析引擎。
hive是运行在hadoop之上的。
在hive中运行的是sql。sql非常接近mysql的sql语法。
在sql中,有数据库、表、字段、类型。
2.hiveQL中的数据库、表、字段、类型与hadoop上的文件结构的类比
数据库——————————文件夹
表————————————文件夹
表中数据—————————文件夹中的数据文件
字段———————————数据文件中的列
hiveQL运行————————MapReduce
3.上面的hiveQL中的表信息必须映射成HDFS中的文件信息,类似于Hibernate的配置文件(*.hmb.xml).这些映射信息不是存放在文件中,而是存放在RDBMS(derby、mysql)中。
4.在centos上按照Mysql
4.1 判断centos上是否有安装,执行命令rpm -qa |grep mysql
4.2 如果已经安装,需要删除原有的,防止冲突,执行命令 rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps
4.3 安装mysql的服务端,执行命令rpm -i MySQL-server-5.5.31-2.el6.i686.rpm
4.4 启动mysql服务,执行命令mysqld_safe&
4.5 安装mysql的客户端,执行命令rpm -i MySQL-client-5.5.31-2.el6.i686.rpm
4.6 设置root用户的密码,执行命令mysql_secure_installation
登录:mysql -uroot-padmin
4.7 修改mysql允许远程访问,在mysql命令行下执行命令 grant all on *.* to 'root'@'%' identified by 'admin';flushprivileges;
5.使用MySQL作为hive的metastore
5.1 安装mysql
5.2 把connector.jar放到hive的lib目录下
5.3 修改hive/conf目录下的文件hive-site.xml
修改默认数据库路径:/user/../warehouse
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop0:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for aJDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for aJDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use againstmetastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>admin</value>
<description>password to use againstmetastore database</description>
</property>
6.对hive表的操作
shell命令:!clear
在外部执行 hive -e
6.1 普通表
CREATE TABLE t1(id int);
LOAD DATA LOCAL INPATH'/root/Downloads/seq' INTO TABLE t1;
CREATETABLE t2(fi int, se int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
LOADDATA LOCAL INPATH '/root/Downloads/sort' INTO TABLE t2;
6.2 分区表
CREATE TABLE t3(id int) PARTITIONED BY(province string,city string);
LOADDATA LOCAL INPATH '/root/Downloads/seq' INTO TABLE t3 PARTITION(province='beijing',city='changping');
6.3 外部表
CREATE EXTERNAL TABLE t4(id int) LOCATION'/apache_logs';
5.4 外部分区表
CREATE EXTERNAL TABLE t5(id int)PARTITIONED BY (logdate string) LOCATION '/apache_logs';
ALTERTABLE t5 ADD PARTITION (logdate='2013_11_11') LOCATION'/apache_logs/2013_11_11';
ALTERTABLE t5 DROP PARTITION (logdate='2013_11_13');
7.使用sqoop把数据从rdbms导入到hdfs中
sqoop import --connectjdbc:mysql://hadoop0:3306/test --username root --password admin --table user --fields-terminated-by'\t'
8.使用sqoop把数据从hdfs导出到mysql中
sqoop export --connectjdbc:mysql://hadoop0:3306/test --username root --password admin --table user --fields-terminated-by '\t'--export-dir '/user/root/user'