Hadoop-Hive快速入门

 Hive 是基于Hadoop 构建的一套数据仓库分析系统,简单来说它可以把我们所熟悉的Sql语句翻译成MapReduce执行,但是Hive只能对表进行select操作,而不能进行insert、delete、update操作。

Hive和Sqoop一样,只要你的Hadoop环境已经搭建好了,安装后就可立即使用。但是它有一个特点:就是你在哪个个目录下执行hive的命令进入到hive模式,它就会在该目录下生成metastore_db(derby数据库文件保存了hive表的信息和其在hdfs的位置),有时可以我们会忘记在哪使用这个命令,而找不到我们创建表的内容。所以下面介绍如何使用mysql来取代默认的derby.


1.配置你的mysql是可以远程登录的

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2.修改hive的文件

在$HIVE_HOME/conf下,赋值一分配置文件

cp hive-default.xml.template hive-site.xml 

修改其中configuration节点的内容如下,注意:把mysql的服务器ip(主机名)修改成为你自己的


        
          javax.jdo.option.ConnectionURL
          jdbc:mysql://slave01:3306/hive?createDatabaseIfNotExist=true
          JDBC connect string for a JDBC metastore
        

        
          javax.jdo.option.ConnectionDriverName
          com.mysql.jdbc.Driver
          Driver class name for a JDBC metastore
        

        
          javax.jdo.option.ConnectionUserName
          root
          username to use against metastore database
        

        
          javax.jdo.option.ConnectionPassword
          123456
          password to use against metastore database
        
		
		
			hive.metastore.warehouse.dir
			/user/hive/warehouse
			location of default database for the warehouse
		

这里hive连接mysql需要一个可用的逻辑驱动器jar包:mysql-connector-java-5.1.26-bin.jar

下载后,把它放到$HIVE_HOME/lib目录下即可,此时无论你在哪个目录下操作hive,都会只有一个数据库。


下面介绍下如何建立Hive的表

内部表(默认),先有表再有数据(删除表,会删掉对应的数据)

create table trade_detail(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t';

内部表加载数据

load data local inpath './book.txt' overwrite into table trade_detail


外部表 ,先有数据再有表,如下就是把hdfs上的表(对于目录)数据绑定到hive的td_ext表上面去(删除表,不会删掉对应的数据)
create external table td_ext(id bigint, account string, income double, expenses double, time string) row format delimited fields terminated by '\t' location '/td_ext';

分区表 ,hdfs会根据 partition字段来创建不同的目录,比如按天、月来创建分区表,从而便于按天来统计数据
create table td_part(id bigint, account string, income double, expenses double, time string) partitioned by (logdate string) row format delimited fields terminated by '\t';
分区表加载数据要指定分区

load data local inpath './book.txt' overwrite into table td_part book partition (logdate='2010-08-22');

更多hive操作可以参看这个仁兄的博客 http://blog.csdn.net/hguisu/article/details/7256833他列举得非常详细




你可能感兴趣的:(Hive,Spark,hadoop,Hadoop)