1. SELECT语句可以使用正则表达式做列选择,下面的语句查询除了ds和h 之外的所有列:SELECT `(ds|hr)?+.+` FROM sales

2. LEFT SEMI JOIN的限制是, JOIN子句中右边的表只能在ON子句中设置过滤条件,在WHERE子句、SELECT子句或其他地方过滤都不行。

3. Hadoop和Hive中数据都是用UTF-8编码的,所以, 所有中文必须是UTF-8编码, 才能正常使用。

4. count(distinct)   当前的Hive不支持在一条查询语句中有多Distinct。如果要在Hive查询语句中实现多Distinct,需要使用至少n+1条查询语句(n为 distinct的数目),前n条查询分别对n个列去重,最后一条查询语句对n个去重之后的列做Join操作,得到最终结果。

5. HAVING   不支持HAVING操作。如果需要这个功能要嵌套一个子查询用where限制

6. Join中处理null值的语义区别    SQL标准中,任何对null的操作(数值比较,字符串操作等)结果都为null。Hive对null值处理的逻辑和标准基本一致,除了Join时的特殊 逻辑。这里的特殊逻辑指的是,Hive的Join中,作为Join key的字段比较,null=null是有意义的,且返回值为true。

7. 分号字符

    分号是SQL语句结束标记,在HiveQL中也是,但是在HiveQL中,对分号的识别没有那么智慧,例如:
select concat(cookie_id,concat(';',’zoo’)) from c02_clickstat_fatdt1 limit 2;
FAILED: Parse Error: line 0:-1 cannot recognize input '<EOF>' in function specification
    可以推断,Hive解析语句的时候,只要遇到分号就认为语句结束,而无论是否用引号包含起来。
    解决的办法是,使用分号的八进制的ASCII码进行转义,那么上述语句应写成:
select concat(cookie_id,concat('\073','zoo')) from c02_clickstat_fatdt1 limit 2;

8. Hive编译器将一个Hive QL转换操作符。操作符Operator是Hive的最小的处理单元,每个操作符代表HDFS的一个操作或者一道MapReduce作业。操作符如下:
    TableScanOperator:扫描hive表数据
    ReduceSinkOperator:创建将发送到Reducer端的<Key,Value>对
    JoinOperator:Join两份数据
    SelectOperator:选择输出列
    FileSinkOperator:建立结果数据,输出至文件
    FilterOperator:过滤输入数据
    GroupByOperator:GroupBy语句
    MapJoinOperator:/*+mapjoin(t) */
    LimitOperator:Limit语句
    UnionOperator:Union语句
    Hive通过ExecMapper和ExecReducer执行MapReduce任务。在执行MapReduce时有两种模式,即本地模式和分布式模式 。

9. Hive cli命令:

reset     重置配置为默认值
set     输出用户覆盖的hive配置变量
set -v     输出所有Hadoop和Hive的配置变量
add FILE[S] <filepath> <filepath>*
add JAR[S] <filepath> <filepath>*
add ARCHIVE[S] <filepath> <filepath>*     添加 一个或多个 file, jar,  archives到分布式缓存
list FILE[S]
list JAR[S]
list ARCHIVE[S]     输出已经添加到分布式缓存的资源。
list FILE[S] <filepath>*
list JAR[S] <filepath>*
list ARCHIVE[S] <filepath>*     检查给定的资源是否添加到分布式缓存
delete FILE[S] <filepath>*
delete JAR[S] <filepath>*
delete ARCHIVE[S] <filepath>*     从分布式缓存删除指定的资源
source FILE <filepath>     在CLI里执行一个hive脚本文件

posted on 2014-05-13 18:42  山君  阅读(748)  评论(0编辑  收藏  举报