首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hive-0.7.0 官方《GettingStarted》札记

2012-11-08 
hive-0.7.0 官方《GettingStarted》笔记下载安装?hadoop fs -mkdir/tmphadoop fs -mkdir/user/hive/warehous

hive-0.7.0 官方《GettingStarted》笔记
下载安装?hadoop fs -mkdir/tmphadoop fs -mkdir/user/hive/warehousehadoop fs -chmod g+w /tmphadoop fs -chmod g+w /user/hive/warehouse

?

HIVE配置

?

hive配置文件路径为:hive-0.7.0/conf/hive-default.xml

?

可以在hive命令执行同时时覆盖配置文件的属性:?bin/hive?-hiveconf?x1=y1?-hiveconf?x2=y2

?

可以在hive中设置hadoop的属性:SET mapred.job.tracker=myhost.mycompany.com:50030;

?

从0.7版本开始hive支持local运行模式,命令:

SET mapred.job.tracker=local;

?

从0.7版本开始hive支持自动map reduce job local运行模式,命令:

?

hive> SET hive.exec.mode.local.auto=true;

?

?如下情况,会自动启动local map reduce job:

job的全部输入小于“hive.exec.mode.local.auto.inputbytes.max ”(默认128MB)?map任务数量小于“hive.exec.mode.local.auto.tasks.max”(默认为4)reduce任务数量为“1”或者“0”

?

hive的默认log路径为:hive.log.dir=/tmp/${user.name}

?

下面是常用语句:

?

CREATE TABLE pokes (foo INT, bar STRING);  CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);SHOW TABLES; SHOW TABLES '.*s';DESCRIBE invites;ALTER TABLE pokes ADD COLUMNS (new_col INT);ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');ALTER TABLE events RENAME TO 3koobecaf;DROP TABLE pokes;
??Metadata文件存储

?

hive默认使用内嵌的derby数据库存储metadata数据,默认存储路径为“hive-0.7.0/bin/metastore_db”,内嵌的方式不允许多个用户同时操作hive命令,如果两个人同时操作hive,第二个人会报错。


metadata可以存储在JDO支持的数据库,通过,

?

javax.jdo.option.ConnectionURL
javax.jdo.option.ConnectionDriverName?

?

?

这两个属性指定。初始化数据库的schema在“hive-0.7.0/src/metastore/src/model/package.jdo”文件


建议:修改hive-default.xml文件“javax.jdo.option.ConnectionURL”属性为jdbc:derby:;databaseName=/where_you_want_path/metastore_db;create=true这样你在任何地方执行hive都可以找到meta数据了,否则每个新的路径执行hive都会创建metastore_db文件夹

?

DML操作LOAD DATA LOCAL INPATH './examples/files/kv3.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-08'); ?

LOCAL:该参数说明待导入文件路径为本地路径,如果没有这个参数则需要指定HDFS路径

INPATH:后面的参数如果是path会导入文件夹所有文件

OVERWRITE:先删除存在文件(包括它的copy_x文件),再LOAD新文件;如果去除这个参数,当遇到相同文件时新文件导入hdfs后,会改名为:existFile_copy_1 ?existFile_copy_2

PARTITION?:指定当前数据存放分区,分区有利于分解大数据job,更好使用集群多机器的优势。

?

?

SQL操作

example文件路径:hive-0.7.0/src/ql/src/test/queries/positive/

?

SQL执行完会将结果显示在console上,但结果不会保存,包含PARTITION的表,在where语句中必须包含PARTITION字段的限定

?

SELECT a.foo FROM invites a WHERE a.ds='2008-08-15';
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;
INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a;DIRECTORY:将保存结果到hdfs中LOCAL DIRECTORY:结果保存到本地文件中TABLE:结果保存到其它表文件夹中创建表同时指定字段分隔符:CREATE TABLE u_data (
userid INT,
movieid INT,
rating INT,
unixtime STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;?

?

安装过程遇到问题

Q:java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.endsWith(Ljava/lang/String;Ljava/lang/String;)Z


A:问题是hadoop的lib下有一个common-lang的jar与hive的lib中common-lang冲突了,干掉hadoop中的jar,好了。

?

?

热点排行