hive之HQL用法案例

建库:

hive> CREATE DATABASE IF NOT EXISTS mydb;

建表:


Hive默认分隔符:

\n                              记录间的分割符,默认一行一条记录
^A (“control” A)        列分隔符,通常写成“\001”
^B                              ARRAY或STRUCT中元素分隔符,或MAP中key与value分隔符,,通常写成“\002”
^C                             MAP中key/value对间的分隔符,通常写作“\003”

可以修改分隔符:


ROW FORMAT DELIMITED:保留关键字
FIELDS TERMINATED BY:列分隔符
COLLECTION ITEMS TERMINATED BY :元素间分隔符
MAP KEYS TERMINATED BY:key/value对间的分隔符
LINES TERMINATED BY:行分隔符

加载数据:
hadoop fs -put ./20130301.small /user/hivetest/logs/small1

hadoop fs -put ./20130302.small /user/hivetest/logs/small2
分析数据:
select log_time.* from logs ;

还有一种建表语句:


删除表:

drop table if exists employees;

Load data
  LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename[PARTITION (partcol1=val1, partcol2=val2 ...)]
Insert
  INSERT OVERWRITE TABLE tablename[PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement FROM from_statement
Multiple insert
  FROM from_statement INSERT OVERWRITE TABLE tablename1 [PARTITION...)] select_statement1 [INSERT OVERWRITE TABLE tablename2 [PARTITION ...] select_statement2] ...

Load data
当数据被加载至表中时,不会对数据进行任何转换。Load 操作只是将数据复制/移动至 Hive 表对应的位置。
默认每个表一个目录,比如数据库dbtest中,表名为tbtest,则数据存放位置为:${metastore.warehouse.dir}/dbtest.db/tbtest
metastore.warehouse.dir默认值是/user/hive/warehouse

举例:




不支持Update操作
  底层存储是HDFS,HDFS本身不支持update操作!

SELECT语句:

SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [ CLUSTER BY col_list| [DISTRIBUTE BY col_list] [SORT BY col_list] | [ORDER BY col_list] ] [LIMIT number]
不支持having和exist in操作

Join
  INNER JOIN
  LEFT OUTER JOIN
  RIGHT OUTER JOIN
  FULL OUTER JOIN
  LEFT SEMI-JOIN
  Map-side Joins
不支持所有非等值的连接

Order by
 只会有一个reduce task
 数据全局有序
 速度可能会非常慢
 Strict模式下,必须与limit连用
Sort by
 可以有多个reduce task
 数据的各个分片有序
 通常与distribute by

distribute by
  相当于MapReduce中的paritioner,默认是基于hash实现的;
  与sort by连用,可发挥很好的作用
 举例:


cluster by
 当distribute by与sort by(降序)连用,且跟随的字段 相同时,可使用cluster by简写;
 举例:


用户可以自定义函数对数据进行处理 如下定义: 
add jar build/ql/test/test-udfs.jar; 
CREATE TEMPORARY FUNCTION testlength AS ‘org.apache.hadoop.hive.ql.udf.UDFTestLength’; 
SELECT testlength(src.value) FROM src; //使用

 DROP TEMPORARY FUNCTION testlength; //删除 函数 

UDFTestLength.java 为: package org.apache.hadoop.hive.ql.udf;
 public class UDFTestLength extends UDF {
  public Integer evaluate(String s)
   { if (s == null) { return null; 
    } return s.length();
   
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值