时间:2021-07-01 10:21:17 帮助过:30人阅读
Hive是一个 hadoop 的数据仓库,便于对 hadoop 中存储的大数据进行数据汇总,点对点查询,以及分析。 Hive提供了一套管理机制用于管理HDFS中的数据及一套类型于sql的查询语言HiveQL。 同时当HiveQL无法满足逻辑的时候,这种语言支持传统的MR程序,以插件的形
Hive是一个hadoop的数据仓库,便于对hadoop中存储的大数据进行数据汇总,点对点查询,以及分析。
Hive提供了一套管理机制用于管理HDFS中的数据及一套类型于sql的查询语言HiveQL。
同时当HiveQL无法满足逻辑的时候,这种语言支持传统的MR程序,以插件的形式集成到Hive的MR中。
Hive是apache基金会下的一个开源志愿者项目。以前他是一个Hadoop的子项目。但是现在他已经升级为一个顶级项目。
安装
Requirements Java1.6,hadoop0.20.xx选择一个稳定版进行安装 http://hive.apache.org/releases.html解压缩tarball。$ tar -xzvf hive-x.y.z.tar.gz$ cd hive-x.y.z $ export HIVE_HOME={{pwd}}
配置 Hive默认的配置是/conf/hive-DEFAULT.xml如果需要变更配置,可以重新配置于 /conf/hive-site.xmlLog4j配置储存于 /conf/hive-log4j.propertiesHive的配置是基于对hadoop的一个覆盖,意思是hadoop的配置变量是缺省继承的。Hive变量的配置方法:1.修改hive-site.xml文件2.通过cli客户端使用SET命令进行3.通过授权hive使用如下语法$ bin/hive -hiveconf x1=y1 -hiveconf x2=y2
运行时配置
Hive的查询是通过MR查询执行的,因此,这样的查询行为都是被hadoop的配置变量进行控制的。hive> SET mapred.job.tracker=myhost.mycompany.com:50030;hive> SET -v;上面的最后一条语句可以显示当前的所有配置。如果不加-v参数,则只显示与基础的hadoop配置不同的配置。
Local模式
hive> SET mapred.job.tracker=LOCAL;hive> SET hive.EXEC.mode.LOCAL.auto=FALSE;$ export PATH=$HIVE_HOME/bin:$PATH
修改Log路径
bin/hive -hiveconf hive.root.logger=INFO,consolebin/hive -hiveconf hive.root.logger=INFO,DRFAMETASTOREmodel描述文件位置:src/contrib/hive/metastore/src/modelDML Operations默认的文件分割呼号是ctr+a文件上传的默认目录是: hive-DEFAULT.xml 中的hive.metastore.warehouse.dir上传文件的两种方式:本地文件LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');远程文件 LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');上面的命令会发生文件和目录的转移。将结果插入到HDFS INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='2008-08-15';将结果插入到本地文件INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a;
只定义mapper任务:py
import sysimport datetimeFOR line IN sys.stdin: line = line.strip() userid, movieid, rating, unixtime = line.split('\t') weekday = datetime.datetime.fromtimestamp(FLOAT(unixtime)).isoweekday() print '\t'.JOIN([userid, movieid, rating, str(weekday)])CREATE TABLE u_data_new ( userid INT, movieid INT, rating INT, weekday INT)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t';ADD FILE weekday_mapper.py;INSERT OVERWRITE TABLE u_data_newSELECT TRANSFORM (userid, movieid, rating, unixtime) USING 'python weekday_mapper.py' AS (userid, movieid, rating, weekday)FROM u_data;SELECT weekday, COUNT(*)FROM u_data_newGROUP BY weekday;
原文地址:ApacheHive一点一点进步(1) 简单介绍, 感谢原作者分享。