• hive 使用笔记(partition; HDFS乱码;日期函数)


    6.  insert 语句

    1) 因为目标表有partition, 所以刚开始我使用的语句是

    insert overwrite table sa_r_item_sales_day_week_month partition(part=FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'))
    select ...

    然而报错:

    Error while compiling statement: FAILED: ParseException cannot recognize input near 'FROM_UNIXTIME' '(' 'UNIX_TIMESTAMP' in constant

    原因: 语法不对

    2) 正确语法:

     insert overwrite table sa_r_item_sales_day_week_month partition(part='2015-12-17')

    或者 

     insert overwrite table sa_r_item_sales_day_week_month partition(part='${part}')      --part就是你穿进去的参数

    ??

    变量在哪赋值或声明 尚不清楚

    7. datetime 并没有这个类型

        time

       FROM_UNIXTIME(UNIX_TIMESTAMP()) 可以获得现在的年月日时分秒;  

    2016-01-21 10:41:26

      CURRENT_DATE 和 CURRENT_TIMESTAMP

      

    8.  分号字符

    分号是SQL语句结束标记,在HiveQL中也是,但是在HiveQL中,对分号的识别没有那么智慧,例如:
               select concat(key,concat(';',key)) from dual;
    但HiveQL在解析语句时提示:
              FAILED: Parse Error: line 0:-1 mismatched input '<EOF>' expecting ) in function specification
    解决的办法是,使用分号的八进制的ASCII码进行转义,那么上述语句应写成:
    select concat(key,concat('73',key)) from dual;

    9. hive文件上传后,中文显示为乱码

    因为hive的数据是保存在HDFS里的,所以保存文件时,选择UTF8即可。

    10. Hive 删除列

    alter table product replace columns(name string);  

    --  原列为id, name

    -- 会把列往前移动,前面的列被抹掉,但文件格式不变,只是不显示

    11. impala 和hive 相通,impala是计算引擎

    1)invalidate metadata;

    • 如果在hive里面做了新增、删除数据库、表或者数据等更新操作,需要执行在impala里面执行此命令,才能将hive的数据同步impala; 
    • 如果直接在impala里面新增、删除数据库、表或者数据,会自动同步到hive,无需执行任何命令。

    2)impala sql 只能写insert into,不能overwrite

  • 相关阅读:
    EXCEL 函数手册
    php 总结(11)php常用整理
    php 总结(10) PDO 连接数据库 预处理
    Dedecms 常用替换sql命令
    php 总结(9) mysql 字段 编码 相关
    解析XML【C#】
    shell安全脚本
    mysql --secure-file-priv写入文件的说明
    Typora使用技巧及markdown语法
    F-MiddlewareScan中间件扫描工具简单试用
  • 原文地址:https://www.cnblogs.com/skyEva/p/5044171.html
Copyright © 2020-2023  润新知