My Hive SQL

我配置hive时出现不能加载自己修改的hive-site.xml等配置文件的问题。发现它总是加载默认的配置文件。

解决:

hadoop的配置文件hadoop-env.sh中加上export HADOOP_CLASSPATH=$HIVE_HOVE/conf:$HADOOP_CLASSPATH

还有一个问题:运行其他hadoop子项目时总会出现找不到类文件,必须把相关jar包拷贝到hadoop的lib目录下,导致其lib目录会越来越大。

至今不知道怎样将其他jar包加入到classpath中,网上说用export HADOOP_CLASSPATH=“”,但是好像不行

hive --config /root/etc/hive(注:/root/etc/hive是指hive-site.xml的存放目录)




HiveQL以分号结束。可以跨行。

在hive的shell上可以使用dfs命令执行HDFS文件操作。

dfs -ls /user/hive/warehouse;


hive语句必须以分号“;”结束。

不支持更新,索引和事务。

表名,列名不区分大小写。

在hive的shell上可以使用dfs命令执行HDFS文件的操作。>>dfs -ls /user/hive/warehouse/;

查看和设置临时变量:>>set fs.default.name[=hdfs://zhaoxiang:9000];

导入jar包: >>add jar hivejar.jar; 

创建函数: >>create temporary function udfTest as ‘com.cstore.udfExample‘;

【在pig中使用UDF,先用register语句注册jar文件,之后可以通过完全的java类名调用,或者用define语句为UDFding 指定一个名称:

register pigjar.jar;

define UPPER org.pigjar.string.UPPER();

B = foreach a generate UPPER($0); 】


可以在本地命令行运行hive的shell:

$ hive -e ‘select * from userinfo‘ (执行hiveQL语句)

$ hive --config /hive-0.9.0/conf (重新载入新的配置文件)

$ hive --service hiveserver 50000(启动服务)


create table cite(citing int, cited int) row format delimited fields terminated by ‘,‘ stored as textfile; //sequencefle


load data (local) inpath ‘cite75_99.txt‘ overwrite into table cite;//若不加local则默认为HDFS路径


select * from cite limit 10; 


show tables;

describe cite;


select count(1)/count(*) from cite; //count(1)相当于SQL中的count(*)


create table cite_count (cited int, count int);


insert overwrite table cite_count select cited , count(citing) from cite group by cited;


select * from cite_count where count > 10 limit 10;


drop table cite_count;


create table page_view(viewTime int, userid bigint,

                      page_url string, referrer_url string, 

                      ip string comment ‘ip address of user‘)

comment ‘this id the page view table‘

partitioned by (dt string, country string)//注意table中的列不能和partition中的列重合

clustered by (userid) into 32 buckets //桶

row format delimited 

      fields terminated by ‘,‘

collection items terminated by ‘\002‘

map keys terminated by ‘\003‘

lines terminated by ‘\n‘

stored as textfile;


//取样

select avg(viewTime) from page_view tablesample(bucket 1 out of 3 [on id]);


//创建外部表,指定目录位置,删除外部表时会删除元数据,表中的数据需手动删除

create external table page_view(viewTime int, userid bigint,

                      page_url string, referrer_url string, 

                      ip string comment ‘ip address of user‘)

location ‘path/to/existing/table/in/HDFS‘;

//修改表

alter table page_view rename to pv;

alter table pv add columns (newcol string);

alter table pv drop partition (dt=‘2009-09-01‘);


show tables ‘page_.*‘;


load data local inpath ‘page_view.txt‘ 

overwrite into table page_view 

partition (dt=‘2009-09-01‘,country=‘US‘);


在hive的shell上执行unix命令:命令前加感叹号(!),命令尾加分号(;).

hive> ! ls ;

hive> ! head hive_result;


//执行查询:

insert overwrite table query-result; //eg: insert overwrite table query_result select * from page_view where country=‘US‘;

insert overwrite (local) directory ‘/hdfs-dir(local-dir)/query_result‘ query;

select country , count(distinct userid) from page_view group by countey;


//子查询,只能在from子句中出现子查询

select teacher, max(class-num) from 

(select teacher, count(classname) as class-num from classinfo group by teacher)subquery

group by teacher;


//连接

select pv.*, choice.*, f.friends from page_view pv 

join user u on (pv.userid=u.id)

join friends-list f on (u.id=f.uid);


//多表插入

create table mutil1 as select id, name from userinfo;

create table mutil2 like mutil1;

from userinfo insert overwrite table mutil1 select id, name 

insert overwrite table mutil2 select count(distint id),name group by name;


//创建视图

create view teacher_classnum as select teacher, count(classname) from classinfo group by teacher;


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。