hive-0.7.0 官方《GettingStarted》笔记

下载安装 

wget http://mirror.bjtu.edu.cn/apache/hive/hive-0.7.0/hive-0.7.0.tar.gz

tar -zxf hive-0.7.0.tar.gz

cd hive-0.7.0

vi ~/.bashrc
export HIVE_HOME={you_hive_home_here}
export PATH=$HIVE_HOME/bin:$PATH
 

 

初始化HDFS路径

 

hadoop fs -mkdir		/tmp
hadoop fs -mkdir		/user/hive/warehouse
hadoop fs -chmod g+w   /tmp
hadoop 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,好了。

 

 

你可能感兴趣的:(apache,hadoop,xml,Derby)