Impala和Inceptor的区别

Impala和Inceptor的区别Impala 和 Inceptor 的区别 inceptor

大家好,欢迎来到IT知识分享网。

# Impala和Inceptor的区别

Inceptor是一种交互式分析引擎,本质是一种SQL翻译器。Inceptor中一共可以操作五种类型的表结构: 1. 普通文本表(TXT表) 2. 分区表(分单值分区和范围分区) 3. 分桶 4. ORC表(Hive ORC格式) 5. ORC事务表(可进行增删改查操作,必须建立分桶表和外表,且两个表的表格式要和源数据字段一一对应起来) 注意:一般来说分区和分桶是结合来使用的,例如先将一个大表按照时间进行分区,再对每个分区进行分桶。 Impala: Cloudera公司推出,提供对HDFS、HBase数据的高性能、低延迟的交互式SQL查询功能。 基于Hive,使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。是CDH平台首选的PB级大数据实时查询分析引擎。 优点: 基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销 无需转换为MapReduce,直接访问存储在HDFS,HBase中的数据进行作业调度,速度快 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销 支持各种文件格式,如TEXTFILE 、SEQUENCEFILE、RCFile、Parquet 可以访问Hive的metastore,对Hive数据直接做数据分析 缺点: 对内存的依赖大,且完全依赖于Hive 实践中,分区超过1万,性能严重下降 只能读取文本文件,而不能直接读取自定义二进制文件 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新

# 1、Impala建表时存储方式是parquet,Inceptor建表时的存储方式是ORC

# Impala建表: drop table if exists dsc_bas.t_bjhg_dymx; create table dsc_bas.t_bjhg_dymx (     `khh` string comment '客户号',     `jys` string comment '交易所',     `gdh` string comment '股东号',     `xwdm` string comment '席位号',     `zyq` string comment '质押券',     `dysl` decimal(22,2) comment '质押数量',     `zt` string comment '状态',     `cjrq` int comment '成交日期',     `cjbh` string comment '成交编号',     `sjlx` string comment '数据类型',     `yyb` string comment '营业部' )comment '报价回购_抵押明细' clustered by (khh) sorted by (khh asc) into 4 buckets stored as parquet; # Inceptor建表: drop table if exists dsc_bas.t_bjhg_dymx; create table dsc_bas.t_bjhg_dymx (     `khh` string comment '客户号',     `jys` string comment '交易所',     `gdh` string comment '股东号',     `xwdm` string comment '席位号',     `zyq` string comment '质押券',     `dysl` decimal(22,2) comment '质押数量',     `zt` string comment '状态',     `cjrq` int comment '成交日期',     `cjbh` string comment '成交编号',     `sjlx` string comment '数据类型',     `yyb` string comment '营业部' )comment '报价回购_抵押明细' clustered by (khh) sorted by (khh asc) into 4 buckets stored as ORC;
Impala插入数据: insert overwrite dsc_cfg.t_zqdm (jys,jyzt,bz,gt_zqlb) select udfs.f_get_etl_tran_dicval      (dsc_cfg,t_zqdm,jys,1,1,a.jys) as jys,       cast(jyzt as string) as jyzt,       udfs.f_get_etl_tran_dicval(dsc_cfg,t_zqdm,bz,1,1,a.bz) as bz,       zqlb as gt_zqlb from src_aboss.tzqdm a; Inceptor插入数据: insert overwrite table dsc_cfg.t_zqdm (jys,jyzt,bz,gt_zqlb) select udfs.f_get_etl_tran_dicval      (dsc_cfg,t_zqdm,jys,1,1,a.jys) as jys,       cast(jyzt as string) as jyzt,       udfs.f_get_etl_tran_dicval(dsc_cfg,t_zqdm,bz,1,1,a.bz) as bz,       zqlb as gt_zqlb from src_aboss.tzqdm a;

#3、udf函数的使用方式不同
Inceptor中不需要udfs.前缀,单个查询时需要指定from system.dual

Impala使用udf函数: select udfs.f_get_jyr_date(,-1); Inceptor使用udf函数: select .f_get_jyr_date(,-1) from system.dual;

#4、变量传递方式不同
Inceptor在脚本中传递变量通过-hivevar name=value,Impala通过-var=“name=value”

Impala: impala-shell -i 10.2.1.55 -l -udingdian \ -- ldap_password_cmd="echo -n dingdian_123" \ -- auth_creds_ok_in_clear -f p_stat_kh_yjfl.sql \ -- var="RQ=" SQL:${VAR:RQ} Inceptor: beeline -u jdbc:hive2://192.168.166.237:10000/default \ -n dingdian -p  -f p_tran_zqhq_his.sql \ --hivevar rq= SQL:${hivevar:rq}
Impala: insert overwrite table dsc_bas.t_zqhq_his(jys) partition (rq=${var:rq}) select udfs.f_get_etl_tran_dicval('dsc_bas','t_zqhq_his','jys',1,1,a.jys) as jys from src_aboss.tzqhq a where a.rq=${VAR:RQ}; Inceptor: insert overwrite table dsc_bas.t_zqhq_his partition (rq=${hivevar:rq}) (jys) select udfs.f_get_etl_tran_dicval('dsc_bas','t_zqhq_his','jys',1,1,a.jys) as jys from src_aboss.tzqhq a where a.rq=${hivevar:RQ};
impala: insert into table temp.tmp_stat_nonekh_zb_yyb_fwkhs_01(u_id,sjdw,sjz,zbdm,zbz,ys_id,cj) with temp_yyb_fwkhs_R as (select....) select .... Inceptor: insert into table temp.tmp_stat_nonekh_zb_yyb_fwkhs_01 with temp_yyb_fwkhs_R as (select....) select ....

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/144127.html

(0)
上一篇 2025-04-28 19:33
下一篇 2025-04-28 20:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信