zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [视频监控]用状态机图展示Layout切换关系
    初次打开mysql5.6后
    eclipse 项目乱码
    java servlet 中遇到的编码问题
    解决HttpServletResponse输出的中文乱码问题
    The first day of my Blog
    最大子段和
    LOI 54 成立一周年纪(zuo)念(si)
    水题 逆序对 NOIP 2013 火柴排队
    搜索 由浅入深 之一 水题
  • 原文地址:https://www.cnblogs.com/skyEva/p/5044171.html
Copyright © 2011-2022 走看看