大数据物流项目:主题及指标开发之即席查询引擎Impala(分布式内存计算)(十一)

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

Logistics_Day11:主题及指标开发

1613867341272

01-[复习]-上次内容回顾

业务一:将业务数据实时增量存储至Kudu表,进行离线报表分析即席查询分析,技术框架如下。

1613869812849

  • 1)、离线报表分析:1个主题报表【快递单tbl_express_bill主题报表开发】
    • 按照数据仓库分层结构管理数据
    • 使用SparkSQL DSL编程,所有分析数据来源:Kudu表,最终分析结果存储到Kudu表中
    • 分析报表:Java Client API读取报表结果进行展示;集成报表工具:Superset

1613870119993

  • 2)、离线报表分析:数据仓库分层结构,及按照主题开发离线报表

1613873267062

每个主题报表开发,分为三层管理数据,其中DWD层和DWS层需要编写SparkSQL程序,业务处理:

  • DWD层程序开发:
    • 从Kudu表加载ODS层事实表数据和维度表数据,按照关联字段,进行拉宽操作,最后存储到Kudu表
    • 技术:Kudu -> SparkSQL -> Kudu
  • DWS层程序开发:
    • 从Kudu表加载DWD层宽表数据,按照指标需要进行计算,最终存储到Kudu表中,以便使用
    • 技术:Kudu -> SparkSQL -> Kudu
  • 3)、主题报表计算思路
/*
    如果加载全量数据,按照day日期划分数据进行每日快递单数据指标统计
    如果是增量数据,也就是昨日数据,直接计算即可
    TODO:无论是全量数据还是增量数据,直接按照全量数据处理,首先获取数据中day值,按照day划分数据,每天数据指标计算
*/
复制代码

1616287128600

02-[了解]-第11天:内容提纲

主要讲解内容:即席查询引擎Impala(分布式内存计算)

1)、Impala 内存分析引擎

  • Impala与Kudu一对CP,Kudu属于快速存储引擎,Impala属于快速分析引擎
  • Impala 框架发展史,框架架构和原理、安装部署启动服务(依赖HiveMetastore)、命令行使用
    • impala-shell
  • Impala如何创建表、Impala与Hue集成

1613870343136

神策数据分析产品中,给用户提供自定义查询:

1613870517307

03-[理解]-即席查询之背景介绍及业务流程

即席查询(Ad Hoc)是==用户根据自己的需求,灵活的选择查询条件==,系统能够根据用户的选择生成相应的统计报表。

​ 即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而==即席查询是由用户自定义查询条件的==。

1613893454738

​ 在快递业务运营过程中,经常会收到用户的投诉或者咨询,用户向咨询服务人员提供账号信息,客服人员可以根据用户的账号查询出来该用户的画像,以便对该用户的情况作为了解,因此数据开发人员需要编写sql语句实现用户画像开发,sql语句的开发牵扯到多表的关联会比较复杂,所以需要开发者平台实现sql的编写,Hue即实现了sql的开发。

1613893814742

​ 针对物流项目来说,即席查询使用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分析数据)业务流程示意图如下所示:

1616314111934

==在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等等

1613894141601

​ 随着Google论文Dremel发表,新一代大数据SQL分析引擎框架出现,比如ImpalaPrestoSparkSQLDrill等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2iPhDYSe-1641192152626)(img/1613894199216.png)]

​ 其中Impala内存分析引擎框架,使用内存分析数据,采用MPP计算内模式,取代Hive框架底层MapReduce,示意图如下所示:

1613894243740

​ 当Cloudera公司开发新一代存储引擎Kudu,主要集成HDFS和HBase存储优势以后,Impala天然集成Kudu,分析存储数据,更加的快速,结构示意图如下:

1613894374147

目前来说,企业中如果使用Kudu存储数据,一定使用Impala分析数据,很有可能使用Spark集成使用。

05-[理解]-即席查询之Impala集成Kudu即席查询

当Cloudera公司出现Kudu存储引擎以后,Impala紧跟与Kudu集成,为了更快分析数据。

1613894606751

​ Apache Impala:分析引擎,【native analytic database】本地分析数据库,不存储数据,仅仅将表的数据存储到其他存储引擎,比如HDFS、HBase或者Kudu。

1613894695588

image-20210531155846910

06-[了解]-即席查询之Impala 分析引擎介绍

Impala是Cloudera提供的一款高效率的SQL查询工具,提供实时的查询效果,官方测试性能比Hive快10到100倍,其SQL查询比SparkSQL还要更加快速,号称是当前大数据领域最快的查询SQL工具。

​ Impala是基于Hive并使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点。

Impala分析引擎,不管理元数据,交给Hive MetaStore管理

1613895088465

网站:impala.apache.org/

​ Kudu与Apache Impala (孵化)紧密集成,Impala天然就支持兼容Kudu,允许开发人员使用Impala的SQL语法从Kudu的tablets 插入,查询,更新和删除数据;

Impala 与 Hive 关系

1616315168360

Hive与Impala比较:

1616315182814

Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询。

  • 2)、Impala 与 Hive 异同

1616315259048

1616315259048

建议:Impala分析引擎,由于使用C++语言编写,使用系统内存,如果在分析数据时,内存不足,很容易查询就被终止,而且错误基本上都看不懂。

当使用Impala分析数据时,无论是HDFS、HBase还是Kudu,都应该分配多一点内存。

07-[理解]-即席查询之Impala 架构原理

Apache Impala 分析引擎,架构由四个部分组成:

  • 1)、Hive MetaStore:由Hive MetaStore管理元数据(比如表、数据库、分区信息等)

  • 2)、Impala Server服务:守护进程,Impalad

    image-20210531164850621

  • 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分布式文件系统,否则出错。

1613896374570

Impalad服务(守护进程)内部三个部分组成:

  • 第一部分、Query Planner 查询计划器
    • 当Impalad服务接收客户端发送请求,比如SQL查询语句,将SQL转换为查询计划(任务)
  • 第二部分、Query Coordinator查询协调器
    • 将查询计划(任务),发送到所需的Impalad服务中QueryExecutor执行器
  • 第三部分、Query Executor查询执行器
    • 执行手动查询计划(执行任务)并将查询结果返回给查询协调器。

08-[理解]-即席查询之Impala 查询流程

​ Impala分析引擎,在进行查询分析数据时流程,前面已经提到Impalad服务有三部分组成:PlannerCoordinatorExecutor

1613897852722

​ 当用户编写SQL提供给Impalad服务以后,就需要转换SQL为查询计划,分发查询计划任务到各个Impalad服务,进行查询分析操作,最后给用户返回结果。

1613898057072

具体流程如下所示:

  • 1)、客户端通过ODBC、JDBC、或者Impala shell向Impala集群中的任意节点发送SQL语句,这个节点的impalad实例作为这个查询的协调器(coordinator)

1616317232100

  • 2)、Impala解析和分析这个查询语句来决定集群中的哪个impalad实例来执行某个任务,HDFS和HBase给本地的impalad实例提供数据访问

1616317273428

  • 3)、各个impalad向协调器impalad返回数据,然后由协调器impalad向client发送结果集

1616317315506

扩展:以前搜狐畅游游戏公司,对每个新的游戏数据分析,架构使用Impala分析

image-20210531171555613

09-[掌握]-即席查询之Impala 服务启动及CLI使用

物流项目中,Impala分析引擎使用CM进行安装(impala就是Cloudera开源框架),注意事项:

  • 1)、安装目录:/opt/cloudera/parcels/CDH/lib/impala

1616317495651

  • 2)、配置文件:/etc/impala/conf/
  • 3)、日志文件:/val/log

1616317631524

启动Imapla服务,按照如下步骤:

  • step1、启动HDFS分布式系统,实际项目中HDFS肯定HA高可用集群

1616317755659

  • step2、启动Hive MetaStore服务

1616317809588

  • step3、启动Impala框架服务
    • Impalad服务、State Stored服务和Catalogd服务

1616317916872

当上述所有服务启动完成以后,可以打开Impala框架中各个服务提供WEB UI界面

1616318015768

1616318058805

Impala分析引擎提供客户端给用户,方便编写SQL语句,进行查询分析数据

1613899685230

impala提供命令行:impala-shell

1616318298756

[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与kudu集成时,建议使用外部表方式,当删除impla中表数据,kudu表没有删除。

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集成,以及其他框架集成,启动时比较慢。==

CDH 6.2.1版本中,Hue服务启动2个服务:HueServer、LoadBalancer

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]

猜你喜欢

转载自juejin.im/post/7108352560032907272