持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情
Logistics_Day11:主题及指标开发
01-[复习]-上次内容回顾
业务一:将业务数据实时增量存储至Kudu表,进行
离线报表分析
及即席查询分析
,技术框架如下。
- 1)、离线报表分析:1个主题报表【快递单
tbl_express_bill
主题报表开发】
- 按照数据仓库分层结构管理数据
- 使用SparkSQL DSL编程,所有分析数据来源:Kudu表,最终分析结果存储到
Kudu
表中- 分析报表:Java Client API读取报表结果进行展示;集成报表工具:
Superset
- 2)、离线报表分析:数据仓库分层结构,及按照主题开发离线报表
每个主题报表开发,分为三层管理数据,其中DWD层和DWS层需要编写SparkSQL程序,业务处理:
- DWD层程序开发:
- 从Kudu表加载ODS层事实表数据和维度表数据,按照关联字段,进行拉宽操作,最后存储到Kudu表
- 技术:
Kudu -> SparkSQL -> Kudu
- DWS层程序开发:
- 从Kudu表加载DWD层宽表数据,按照指标需要进行计算,最终存储到Kudu表中,以便使用
- 技术:
Kudu -> SparkSQL -> Kudu
- 3)、主题报表计算思路
/*
如果加载全量数据,按照day日期划分数据进行每日快递单数据指标统计
如果是增量数据,也就是昨日数据,直接计算即可
TODO:无论是全量数据还是增量数据,直接按照全量数据处理,首先获取数据中day值,按照day划分数据,每天数据指标计算
*/
复制代码
02-[了解]-第11天:内容提纲
1)、
Impala
内存分析引擎
- Impala与Kudu一对CP,Kudu属于快速
存储
引擎,Impala属于快速分析
引擎- Impala 框架发展史,框架架构和原理、安装部署启动服务(依赖
HiveMetastore
)、命令行使用
impala-shell
- Impala如何创建表、Impala与Hue集成
神策数据分析产品中,给用户提供自定义查询:
03-[理解]-即席查询之背景介绍及业务流程
即席查询(Ad Hoc)
是==用户根据自己的需求,灵活的选择查询条件==,系统能够根据用户的选择生成相应的统计报表。 即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而==即席查询是由用户自定义查询条件的==。
在快递业务运营过程中,经常会收到用户的投诉或者咨询,用户向咨询服务人员提供账号信息,客服人员可以根据用户的账号查询出来该用户的画像,以便对该用户的情况作为了解,因此数据开发人员需要编写sql语句实现用户画像开发,sql语句的开发牵扯到多表的关联会比较复杂,所以需要开发者平台实现sql的编写,Hue即实现了sql的开发。
针对物流项目来说,即席查询使用
Impala
分析引擎实现,基于内存分析引擎,目前来说SQL on Hadoop查询最快的SQL查询引擎工具。当Kudu 存储引擎出现以后,Impala与Kudu搭档就是一对CP,一个存储,一个分析,2个框架都是C++编写
很多数据可视化框架都可以与Impala集成,比如Hue框架,比如DBeave,比如Superset,直接编写SQL语句查询分析,还可以可视化展示。
- 1)、Hue集成Impala,提供界面WEB UI编写SQL语句,使用最多
- 2)、DBeave集成Impala,提供SQL界面,分析数据库中
- 3)、Superset集成Impala,查询表的数据,可视化展示
针对即席查询(编写SQL分析数据)业务流程示意图如下所示:
==在Impala中创建表,映射到Kudu表(ODS层数据)中,在Hue提供界面上编写SQL语句,分析查询。==
04-[了解]-即席查询之SQL on Hadoop 发展史
在大数据框架Hadoop出现之后,第一个SQL on Hadoop框架就是
Apache Hive
,提供SQL语句,底层转换为MapReduce
程序,针对海量数据分析处理。Hive 框架依赖
MySQL
数据库,存储元数据:database、table、column、name、type、partition
等等
随着Google论文
Dremel
发表,新一代大数据SQL分析引擎框架出现,比如Impala
、Presto
、SparkSQL
、Drill
等。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2iPhDYSe-1641192152626)(img/1613894199216.png)]
其中Impala内存分析引擎框架,使用内存分析数据,采用MPP计算内模式,取代Hive框架底层MapReduce,示意图如下所示:
当Cloudera公司开发新一代存储引擎
Kudu
,主要集成HDFS和HBase存储优势以后,Impala天然集成Kudu,分析存储数据,更加的快速,结构示意图如下:
05-[理解]-即席查询之Impala集成Kudu即席查询
当Cloudera公司出现Kudu存储引擎以后,Impala紧跟与Kudu集成,为了更快分析数据。
Apache Impala:分析引擎,【native analytic database】本地分析数据库,不存储数据,仅仅将表的数据存储到其他存储引擎,比如HDFS、HBase或者Kudu。
- 1)、Kudu:存储数据,按照表的方式管理数据,往往采用数仓分层结构管理数据
- 2)、Impala:分析数据,表中数据隐射到Kudu表中,让Kudu存储数据
- 3)、Hue:为用户提供SQL语句,交给Impala分析引擎,从Kudu表加载数据,放到内存分析处理。
06-[了解]-即席查询之Impala 分析引擎介绍
Impala
是Cloudera提供的一款高效率的SQL查询工具
,提供实时的查询效果
,官方测试性能比Hive快10到100倍,其SQL查询比SparkSQL还要更加快速,号称是当前大数据领域最快的查询SQL工具。 Impala是
基于Hive并使用内存进行计算
,兼顾数据仓库
,具有实时,批处理,多并发等优点。
Kudu与Apache Impala (孵化)紧密集成,Impala天然就支持兼容Kudu,允许开发人员使用Impala的SQL语法从Kudu的tablets 插入,查询,更新和删除数据;
Hive与Impala比较:
Hive适合于长时间的批处理查询分析,而
Impala
适合于实时交互式SQL查询。
- 2)、Impala 与 Hive 异同
建议:Impala分析引擎,由于使用C++语言编写,使用系统内存,如果在分析数据时,内存不足,很容易查询就被终止,而且错误基本上都看不懂。
07-[理解]-即席查询之Impala 架构原理
Apache Impala 分析引擎,架构由四个部分组成:
1)、Hive MetaStore:由Hive MetaStore管理元数据(比如表、数据库、分区信息等)
2)、Impala Server服务:
守护进程,Impalad
- 在每台机器上都会安装服务进程,通常与存储引擎数据节点在一台机器上
- 比如,Impala分析Kudu表的数据,那么Kudu框架中数据节点Kudu TabletServer上都会安装Impalad
- 功能:分析数据,当每个数据节点上安装服务以后,可以进行数据本地化(
Local
)分析
3)、
Impala StateStore
:状态服务
- 向所有Impalad服务同步信息
4)、
Catalogd
:元数据服务
- 向所有Impalad服务同步元数据,比如在Impala中创建表,将元数据告知所有Impalad服务
- 当Catalogd服务启动时,会从Hive MetaStore加载元数据信息,同步给Impalad服务
5)、Impala 命令行客户端:
- 类似hive命令行:
impala-shell
,用户可以使用连接任意一个Impalad服务,编写SQL语句和DDL语句,执行操作,返回结果。此外,由于历史原因,Impala开始诞生取代Hive,处理HDFS上数据,所以Impala服务启动之前,需要启动HDFS分布式文件系统,否则出错。
Impalad服务
(守护进程)内部三个部分组成:
- 第一部分、Query Planner 查询计划器
- 当Impalad服务接收客户端发送请求,比如SQL查询语句,将SQL转换为查询计划(任务)
- 第二部分、Query Coordinator查询协调器
- 将查询计划(任务),发送到所需的Impalad服务中QueryExecutor执行器
- 第三部分、Query Executor查询执行器
- 执行手动查询计划(执行任务)并将查询结果返回给查询协调器。
08-[理解]-即席查询之Impala 查询流程
Impala分析引擎,在进行查询分析数据时流程,前面已经提到Impalad服务有三部分组成:
Planner
、Coordinator
及Executor
。
当用户编写SQL提供给Impalad服务以后,就需要转换
SQL为查询计划
,分发查询计划任务到各个Impalad服务,进行查询分析操作,最后给用户返回结果。
具体流程如下所示:
- 1)、客户端通过ODBC、JDBC、或者Impala shell向Impala集群中的
任意节点发送SQL语句
,这个节点的impalad实例作为这个查询的协调器(coordinator)
- 2)、Impala解析和分析这个查询语句来决定集群中的
哪个impalad实例来执行某个任务
,HDFS和HBase给本地的impalad实例提供数据访问
- 3)、各个impalad向协调器impalad返回数据,然后由协调器impalad向client发送结果集
扩展:以前搜狐畅游游戏公司,对每个新的游戏数据分析,架构使用Impala分析
09-[掌握]-即席查询之Impala 服务启动及CLI使用
物流项目中,Impala分析引擎使用CM进行安装(impala就是Cloudera开源框架),注意事项:
- 1)、安装目录:
/opt/cloudera/parcels/CDH/lib/impala
- 2)、配置文件:
/etc/impala/conf/
- 3)、日志文件:
/val/log
- step1、启动HDFS分布式系统,实际项目中HDFS肯定HA高可用集群
- step2、启动Hive MetaStore服务
- step3、启动Impala框架服务
- Impalad服务、State Stored服务和Catalogd服务
当上述所有服务启动完成以后,可以打开Impala框架中各个服务提供WEB UI界面
- Impalad 服务界面:node2.itcast.cn:25000/
- 2)、Impala StateStored 服务:node2.itcast.cn:25010/
-
3)、Impala Catalogd元数据服务:node2.itcast.cn:25020/
Impala分析引擎提供客户端给用户,方便编写SQL语句,进行查询分析数据
impala提供命令行:
impala-shell
[root@node2 ~]# impala-shell --help
Usage: impala_shell.py [options]
Options:
-h, --help show this help message and exit
-i IMPALAD, --impalad=IMPALAD
<host:port> of impalad to connect to
[default: node2.itcast.cn:21000]
-b KERBEROS_HOST_FQDN, --kerberos_host_fqdn=KERBEROS_HOST_FQDN
If set, overrides the expected hostname of the
Impalad's kerberos service principal. impala-shell
will check that the server's principal matches this
hostname. This may be used when impalad is configured
to be accessed via a load-balancer, but it is desired
for impala-shell to talk to a specific impalad
directly. [default: none]
-q QUERY, --query=QUERY
Execute a query without the shell [default: none]
-f QUERY_FILE, --query_file=QUERY_FILE
Execute the queries in the query file, delimited by ;.
If the argument to -f is "-", then queries are read
from stdin and terminated with ctrl-d. [default: none]
-k, --kerberos Connect to a kerberized impalad [default: False]
-o OUTPUT_FILE, --output_file=OUTPUT_FILE
If set, query results are written to the given file.
Results from multiple semicolon-terminated queries
will be appended to the same file [default: none]
-B, --delimited Output rows in delimited mode [default: False]
--print_header Print column names in delimited mode when pretty-
printed. [default: False]
--output_delimiter=OUTPUT_DELIMITER
Field delimiter to use for output in delimited mode
[default: \t]
-s KERBEROS_SERVICE_NAME, --kerberos_service_name=KERBEROS_SERVICE_NAME
Service name of a kerberized impalad [default: impala]
-V, --verbose Verbose output [default: True]
-p, --show_profiles Always display query profiles after execution
[default: False]
--quiet Disable verbose output [default: False]
-v, --version Print version information [default: False]
-c, --ignore_query_failure
Continue on query failure [default: False]
-d DEFAULT_DB, --database=DEFAULT_DB
Issues a use database command on startup
[default: none]
-l, --ldap Use LDAP to authenticate with Impala. Impala must be
configured to allow LDAP authentication.
[default: False]
-u USER, --user=USER User to authenticate with. [default: root]
--ssl Connect to Impala via SSL-secured connection
[default: False]
--ca_cert=CA_CERT Full path to certificate file used to authenticate
Impala's SSL certificate. May either be a copy of
Impala's certificate (for self-signed certs) or the
certificate of a trusted third-party CA. If not set,
but SSL is enabled, the shell will NOT verify Impala's
server certificate [default: none]
--config_file=CONFIG_FILE
Specify the configuration file to load options. The
following sections are used: [impala],
[impala.query_options]. Section names are case
sensitive. Specifying this option within a config file
will have no effect. Only specify this as an option in
the commandline. [default: /root/.impalarc]
--history_file=HISTORY_FILE
The file in which to store shell history. This may
also be configured using the IMPALA_HISTFILE
environment variable. [default: ~/.impalahistory]
--live_summary Print a query summary every 1s while the query is
running. [default: False]
--live_progress Print a query progress every 1s while the query is
running. [default: False]
--auth_creds_ok_in_clear
If set, LDAP authentication may be used with an
insecure connection to Impala. WARNING: Authentication
credentials will therefore be sent unencrypted, and
may be vulnerable to attack. [default: none]
--ldap_password_cmd=LDAP_PASSWORD_CMD
Shell command to run to retrieve the LDAP password
[default: none]
--var=KEYVAL Defines a variable to be used within the Impala
session. Can be used multiple times to set different
variables. It must follow the pattern "KEY=VALUE", KEY
starts with an alphabetic character and contains
alphanumeric characters or underscores. [default:
none]
-Q QUERY_OPTIONS, --query_option=QUERY_OPTIONS
Sets the default for a query option. Can be used
multiple times to set different query options. It must
follow the pattern "KEY=VALUE", KEY must be a valid
query option. Valid query options can be listed by
command 'set'. [default: none]
-t CLIENT_CONNECT_TIMEOUT_MS, --client_connect_timeout_ms=CLIENT_CONNECT_TIMEOUT_MS
Timeout in milliseconds after which impala-shell will
time out if it fails to connect to Impala server. Set
to 0 to disable any timeout. [default: 60000]
复制代码
发现impala-shell命令行执行python脚本:
[root@node2 ~]# impala-shell -i node2.itcast.cn:21000
Starting Impala Shell without Kerberos authentication
Opened TCP connection to node2.itcast.cn:21000
Connected to node2.itcast.cn:21000
Server version: impalad version 3.2.0-cdh6.2.1 RELEASE (build 525e372410dd2ce206e2ad0f21f57cae7380c0cb)
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v3.2.0-cdh6.2.1 (525e372) built on Wed Sep 11 01:30:44 PDT 2019)
You can change the Impala daemon that you're connected to by using the CONNECT
command.To see how Impala will plan to run your query without actually executing
it, use the EXPLAIN command. You can change the level of detail in the EXPLAIN
output by setting the EXPLAIN_LEVEL query option.
***********************************************************************************
[node2.itcast.cn:21000] default> show databases ;
Query: show databases
+------------------+----------------------------------------------+
| name | comment |
+------------------+----------------------------------------------+
| _impala_builtins | System database for Impala builtin functions |
| default | Default Hive database |
| logistics | ??????? |
+------------------+----------------------------------------------+
Fetched 3 row(s) in 0.52s
[node2.itcast.cn:21000] default> use logistics ;
Query: use logistics
[node2.itcast.cn:21000] logistics>
[node2.itcast.cn:21000] logistics> show tables ;
Query: show tables
+--------------------------------+
| name |
+--------------------------------+
| tbl_address |
| tbl_areas |
| tbl_charge_standard |
| tbl_codes |
| tbl_collect_package |
| tbl_company |
| tbl_company_dot_map |
| tbl_company_transport_route_ma |
| tbl_company_warehouse_map |
| tbl_consumer_address_map |
| tbl_consumer_sender_info |
| tbl_courier |
| tbl_customer |
| tbl_customer_detail |
| tbl_deliver_package |
| tbl_deliver_region |
| tbl_delivery_record |
| tbl_department |
| tbl_dot |
| tbl_dot_transport_tool |
| tbl_dot_transport_tool_detail |
| tbl_driver |
| tbl_emp |
| tbl_emp_info_map |
| tbl_example1 |
| tbl_express_bill |
| tbl_express_bill_detail |
| tbl_express_package |
| tbl_fixed_area |
| tbl_goods_rack |
| tbl_job |
| tbl_out_warehouse |
| tbl_out_warehouse_detail |
| tbl_pkg |
| tbl_postal_standard |
| tbl_push_warehouse |
| tbl_push_warehouse_detail |
| tbl_route |
| tbl_service_evaluation |
| tbl_store_grid |
| tbl_transport_tool |
| tbl_vehicle_monitor |
| tbl_warehouse |
| tbl_warehouse_emp |
| tbl_warehouse_rack_map |
| tbl_warehouse_receipt |
| tbl_warehouse_receipt_detail |
| tbl_warehouse_send_vehicle |
| tbl_warehouse_transport_detail |
| tbl_warehouse_transport_tool |
| tbl_warehouse_vehicle_map |
| tbl_waybill |
| tbl_waybill_detail |
| tbl_waybill_line |
| tbl_waybill_state_record |
| tbl_work_time |
| test |
+--------------------------------+
Fetched 57 row(s) in 0.03s
[node2.itcast.cn:21000] logistics> select * from tbl_express_bill limit 10 ;
Query: select * from tbl_express_bill limit 10
Query submitted at: 2021-03-21 17:21:28 (Coordinator: http://node2.itcast.cn:25000)
Query progress can be monitored at: http://node2.itcast.cn:25000/query_plan?query_id=ed4ee096548edaa5:6380ed8300000000
复制代码
10-[理解]-即席查询之使用Impala操作Kudu
Impala与Kudu集成,集成时,需要注意:启动相关服务组件和在Impala中创建表映射到Kudu表中。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c4iljpwb-1641192152644)(/img/1616318681670.png)]
首先使用impala-shell连接impalad服务,创建数据库:
[root@node2 ~]# impala-shell -i node2.itcast.cn:21000
Starting Impala Shell without Kerberos authentication
Opened TCP connection to node2.itcast.cn:21000
Connected to node2.itcast.cn:21000
Server version: impalad version 3.2.0-cdh6.2.1 RELEASE (build 525e372410dd2ce206e2ad0f21f57cae7380c0cb)
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v3.2.0-cdh6.2.1 (525e372) built on Wed Sep 11 01:30:44 PDT 2019)
The '-B' command line flag turns off pretty-printing for query results. Use this
flag to remove formatting from results you want to save for later, or to benchmark
Impala.
***********************************************************************************
[node2.itcast.cn:21000] default> create database db_kudu ;
Query: create database db_kudu
+----------------------------+
| summary |
+----------------------------+
| Database has been created. |
+----------------------------+
Fetched 1 row(s) in 2.60s
[node2.itcast.cn:21000] default> use db_kudu ;
Query: use db_kudu
[node2.itcast.cn:21000] db_kudu>
复制代码
接下来,Impala与Kudu表集成:
- 1)、方式一、管理表集成
- 相当Hive中管理表,删除表时,元数据和数据都被删除
- impala中表删除,kudu中对应表也被删除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mvRHbLTa-1641192152645)(img/1613900209137.png)]
[node2.itcast.cn:21000] db_kudu> CREATE TABLE `my_first_table`
> (
> id BIGINT,
> name STRING,
> PRIMARY KEY(id)
> )
> PARTITION BY HASH PARTITIONS 16
> STORED AS KUDU
> TBLPROPERTIES (
> 'kudu.num_tablet_replicas' = '1'
> );
Query: CREATE TABLE `my_first_table`
(
id BIGINT,
name STRING,
PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU
TBLPROPERTIES (
'kudu.num_tablet_replicas' = '1'
)
+-------------------------+
| summary |
+-------------------------+
| Table has been created. |
+-------------------------+
Fetched 1 row(s) in 5.73s
[node2.itcast.cn:21000] db_kudu> show tables ;
Query: show tables
+----------------+
| name |
+----------------+
| my_first_table |
+----------------+
Fetched 1 row(s) in 0.04s
[node2.itcast.cn:21000] db_kudu> drop table if exists my_first_table;
Query: drop table if exists my_first_table
+-------------------------+
| summary |
+-------------------------+
| Table has been dropped. |
+-------------------------+
Fetched 1 row(s) in 7.10s
[node2.itcast.cn:21000] db_kudu> show tables ;
Query: show tables
Fetched 0 row(s) in 0.07s
复制代码
- 2)、方式二、外部表集成
- 相当Hive中外部表,删除表示,仅仅删除元数据
- impala中表删除,kudu中表没有被删除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oyZxEt1E-1641192152645)(img/1613900499712.png)]
[node2.itcast.cn:21000] db_kudu> CREATE EXTERNAL TABLE `tbl_emp` STORED AS KUDU
> TBLPROPERTIES(
> 'kudu.table_name' = 'tbl_emp',
> 'kudu.master_addresses' = 'node2.itcast.cn:7051') ;
Query: CREATE EXTERNAL TABLE `tbl_emp` STORED AS KUDU
TBLPROPERTIES(
'kudu.table_name' = 'tbl_emp',
'kudu.master_addresses' = 'node2.itcast.cn:7051')
+-------------------------+
| summary |
+-------------------------+
| Table has been created. |
+-------------------------+
Fetched 1 row(s) in 0.55s
[node2.itcast.cn:21000] db_kudu> show tables ;
Query: show tables
+---------+
| name |
+---------+
| tbl_emp |
+---------+
Fetched 1 row(s) in 0.01s
[node2.itcast.cn:21000] db_kudu>
[node2.itcast.cn:21000] db_kudu> select * from tbl_emp limit 10 ;
Query: select * from tbl_emp limit 10
Query submitted at: 2021-03-21 17:31:49 (Coordinator: http://node2.itcast.cn:25000)
Query progress can be monitored at: http://node2.itcast.cn:25000/query_plan?query_id=bc42a1cbb7be5cb6:aeee39e400000000
+----+---------------------+---------------------+-----------+---------+-----------+--------+-------+---------------------+
| id | cdt | empbirathday | empgender | empname | empnumber | remark | state | udt |
+----+---------------------+---------------------+-----------+---------+-----------+--------+-------+---------------------+
| 1 | 2016-03-11 03:07:36 | 1975-03-30 04:48:53 | 1 | 肥项禹 | 98537 | NULL | 1 | 2016-03-11 03:07:37 |
| 8 | 2016-03-11 03:07:36 | 2006-03-12 06:38:08 | 1 | 昔又香 | 87686 | NULL | 1 | 2016-03-11 03:07:37 |
| 10 | 2016-03-11 03:07:36 | 2004-11-11 15:00:22 | 1 | 哀以松 | 18487 | NULL | 1 | 2016-03-11 03:07:37 |
| 11 | 2016-03-11 03:07:36 | 2009-06-22 08:07:23 | 1 | 聊浦和 | 24470 | NULL | 1 | 2016-03-11 03:07:37 |
| 14 | 2016-03-11 03:07:36 | 2020-01-15 06:42:09 | 1 | 洋冬萱 | 25579 | NULL | 1 | 2016-03-11 03:07:37 |
| 16 | 2016-03-11 03:07:36 | 2001-04-08 00:53:17 | 1 | 席慧云 | 64030 | NULL | 1 | 2016-03-11 03:07:37 |
| 17 | 2016-03-11 03:07:36 | 2017-09-19 19:59:52 | 1 | 干月灵 | 46621 | NULL | 1 | 2016-03-11 03:07:37 |
| 19 | 2016-03-11 03:07:36 | 2010-12-21 16:35:40 | 1 | 钮幻桃 | 35884 | NULL | 1 | 2016-03-11 03:07:37 |
| 27 | 2016-03-11 03:07:36 | 2008-12-06 02:37:57 | 1 | 才雪容 | 76262 | NULL | 1 | 2016-03-11 03:07:37 |
| 29 | 2016-03-11 03:07:36 | 2009-12-27 04:27:34 | 1 | 禹涵桃 | 63525 | NULL | 1 | 2016-03-11 03:07:37 |
+----+---------------------+---------------------+-----------+---------+-----------+--------+-------+---------------------+
Fetched 10 row(s) in 26.04s
[node2.itcast.cn:21000] db_kudu> drop table tbl_emp ;
Query: drop table tbl_emp
+-------------------------+
| summary |
+-------------------------+
| Table has been dropped. |
+-------------------------+
Fetched 1 row(s) in 7.22s
[node2.itcast.cn:21000] db_kudu> show tables ;
Query: show tables
Fetched 0 row(s) in 0.02s
复制代码
Impala DML操作,包含数据插入、数据更新和数据删除以及数据查询分析。
CREATE TABLE `my_first_table`
(
id BIGINT,
name STRING,
PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU
TBLPROPERTIES (
'kudu.num_tablet_replicas' = '1'
);
INSERT INTO my_first_table VALUES (50, "zhangsan");
复制代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5HlXBUyT-1641192152646)(/img/1616319412797.png)]
[node2.itcast.cn:21000] db_kudu> INSERT INTO my_first_table VALUES (1, "john"), (2, "jane"), (3, "jim");
Query: INSERT INTO my_first_table VALUES (1, "john"), (2, "jane"), (3, "jim")
Query submitted at: 2021-03-21 17:37:07 (Coordinator: http://node2.itcast.cn:25000)
Query progress can be monitored at: http://node2.itcast.cn:25000/query_plan?query_id=974337f26ef055a2:3509d1b900000000
Modified 3 row(s), 0 row error(s) in 0.26s
[node2.itcast.cn:21000] db_kudu>
[node2.itcast.cn:21000] db_kudu> select * from my_first_table ;
Query: select * from my_first_table
Query submitted at: 2021-03-21 17:37:09 (Coordinator: http://node2.itcast.cn:25000)
Query progress can be monitored at: http://node2.itcast.cn:25000/query_plan?query_id=6a4608a12ee92237:9110732f00000000
+----+----------+
| id | name |
+----+----------+
| 50 | zhangsan |
| 2 | jane |
| 3 | jim |
| 1 | john |
+----+----------+
Fetched 4 row(s) in 0.27s
复制代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-etuNkpLa-1641192152646)(/img/1616319469934.png)]
Impala与Kudu集成时,插入数据方式:
1、insert单条记录
2、insert多条记录
3、子查询插入
复制代码
更新数据:update语句
[node2.itcast.cn:21000] db_kudu>
[node2.itcast.cn:21000] db_kudu> UPDATE my_first_table SET name="xiaowang" where id =1 ;
Query: UPDATE my_first_table SET name="xiaowang" where id =1
Query submitted at: 2021-03-21 17:38:11 (Coordinator: http://node2.itcast.cn:25000)
Query progress can be monitored at: http://node2.itcast.cn:25000/query_plan?query_id=314c908c835d71e3:bb0e700c00000000
Modified 1 row(s), 0 row error(s) in 0.53s
[node2.itcast.cn:21000] db_kudu>
[node2.itcast.cn:21000] db_kudu> select * from my_first_table ;
Query: select * from my_first_table
Query submitted at: 2021-03-21 17:38:14 (Coordinator: http://node2.itcast.cn:25000)
Query progress can be monitored at: http://node2.itcast.cn:25000/query_plan?query_id=c949987ff8a003f6:db504d1a00000000
+----+----------+
| id | name |
+----+----------+
| 50 | zhangsan |
| 2 | jane |
| 3 | jim |
| 1 | xiaowang |
+----+----------+
Fetched 4 row(s) in 0.15s
复制代码
删除数据:delete语句
[node2.itcast.cn:21000] db_kudu> delete from my_first_table where id =2;
Query: delete from my_first_table where id =2
Query submitted at: 2021-03-21 17:39:35 (Coordinator: http://node2.itcast.cn:25000)
Query progress can be monitored at: http://node2.itcast.cn:25000/query_plan?query_id=5b48f7834e5ca05c:72db5f8f00000000
Modified 1 row(s), 0 row error(s) in 0.42s
[node2.itcast.cn:21000] db_kudu>
[node2.itcast.cn:21000] db_kudu> select * from my_first_table ;
Query: select * from my_first_table
Query submitted at: 2021-03-21 17:39:37 (Coordinator: http://node2.itcast.cn:25000)
Query progress can be monitored at: http://node2.itcast.cn:25000/query_plan?query_id=d04152da32a15d13:3397d4fa00000000
+----+----------+
| id | name |
+----+----------+
| 50 | zhangsan |
| 3 | jim |
| 1 | xiaowang |
+----+----------+
Fetched 3 row(s) in 0.13s
复制代码
11-[理解]-即席查询之Hue集成Impala
Hue与Impala集成,为客户提供可视化WEB UI界面,编写SQL语句分析数据,企业中常用方式。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V7sBIkhK-1641192152646)(/img/1616319782217.png)]
Hue安装采用CM进行安装,Hue框架也是Cloudera公司开源,页面启动Hue服务。
==Hue安装就可以配置与impala集成,以及其他框架集成,启动时比较慢。==
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NxPnXZTx-1641192152646)(/img/1616319892724.png)]
当Hue服务启动以后,可以访问地址:node2.itcast.cn:8888/、http://nod…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ZCrkoZr-1641192152647)(/img/1616320101950.png)]
登录进入Hue界面以后,可以选择底层分析引擎:要么是impala(内存)、要么是hive
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmzyDVod-1641192152647)(/img/1616320741553.png)]
当选择impala引擎以后:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oNds4HCY-1641192152647)(/img/1616320830250.png)]
点击查询按钮【向右箭头】即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RBtHDc9z-1641192152648)(/img/1616320928054.png)]
可以对编写SQL查给一个名称和描述,下次可以直接 运行SQL即可。
Hue配置与大数据框架集成时,页面地址:node2.itcast.cn:7180/cmf/service…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rqQkhYS8-1641192152648)(/img/1616321021806.png)]
12-[理解]-即席查询之JDBC Client 连接
使用Impala分析数据时,可以使用如下三种方式:Hue界面、impala-shell命令行和JDBC/ODBC连接(BI工具)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z3KzOmOt-1641192152648)(/img/1614041952644.png)]
可以通过
JDBC
方式连接Impalad服务,端口号:21050
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BG45m2Ay-1641192152648)(/img/1616376602336.png)]
使用数据库Client工具:DBeave连接Impala,需要JDBC驱动:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ceFtPEG-1641192152649)(/img/1616376670241.png)]
在DBeave中创建Impala连接:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tYZNfSz8-1641192152649)(/img/1616376773788.png)]
使用DBeave连接Impalad服务以后,进行查询分析数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6KcPlDMb-1641192152649)(/img/1616376882974.png)]