以下是工作中使用Impala遇到的问题记录
目录
4.impala 或hive 给指定kudu库中的表添加列,修改列并调整列位置
1.impala的连接问题:
当设置ldap权限后,impala登陆需要用户名/密码的验证
2.取消impala任务:
- 在cm管理界面取消
- 查看impala具体的节点,比如http://test01:25000/queries,取消查询任务
因为发现在CDH中的impala查询页面取消impala的任务是没有效果的,所以登陆impala节点的那台服务器上去直接取消任务。
3.Hive和impala的concat函数区别
impala使用过程中concat 字段拼接中的坑:
Hive里面 concat 和concat_ws函数不一样,但是impala里两函数是一样的,只要有一个拼接字段有空值结果都是空值,但是hive里,concat_ws函数只要有一个字段不为空,结果就不为空。
所以在使用concat_ws函数,某一个字段是空值就会导致rowkey主键为NULL的现象,修改的方法可以使用ifnull进行替换。
示例:
--impala 使用的时候concat 做字段拼接的时候如果拼接的字段为null,那么拼接之后整个字段都为null,需要将null字段先转为空字符串,用ifnull处理
CONCAT(coor_x,IFNULL(coor_x_2,''),IFNULL(coor_x_3,''),IFNULL(coor_x_4,''),IFNULL(coor_x_5,'')) coor_x,
CONCAT(coor_y,IFNULL(coor_y_2,''),IFNULL(coor_y_3,''),IFNULL(coor_y_4,''),IFNULL(coor_y_5,'')) coor_y,
4.impala 或hive 给指定kudu库中的表添加列,修改列并调整列位置
alter TABLE fact_cpu_supply_category add columns(supplier_name string COMMENT '供应商名称');
ALTER TABLE fact_cpu_supply_category CHANGE supplier_name supplier_name STRING AFTER doc_id;
注意在impala中after clolumn这部分是执行不了的,hive可以执行
原文参考链接:https://blog.csdn.net/zy103118/article/details/103010989
5.Impala时区问题
做项目的时候发现impala运行UNIX_TIMESTAMP得到的时间戳通过网页工具转换差8个小时,经查询是时区的问题:
默认impala配置不是中国的时区,所以在用from_unixtime的时候,有八个小时的时间差。
解决方案1:
impala启动时加 -use_local_tz_for_unix_timestamp_conversions=true。
在cdh里面,impala->配置->mpala Daemo ->Impala Daemon 命令行参数高级配置代码段(安全阀) 加 -use_local_tz_for_unix_timestamp_conversions=true
解决方案2:
用时间函数减去八个小时:
SELECT UNIX_TIMESTAMP('2021-02-04 00:30:12')-28800
6. kudu中视图更改
hive中只能建立和删除视图,而通过impala操作kudu表可以建立、更改、删除视图。类似Oracle中的create or replace view myview。
在impala中修改视图语句:
Alter view myview as
select id, name, salary
from customers;
其他小问题
正确使用Impala的invalidate metadata与refresh语句
参考文章: