Palo Doris不会用?(基础指南)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Palo Doris不会用?(基础指南)

基础使用指南

在快速入门教程中,我们通过 Doris 的 UI 界面完成了 Doris 的一些基本操作。而在实际生产环境中,用户通常需要使用程序连接到 Doris 并进行各种操作。

Doris 采用 MySQL 协议进行通信,因此用户可以标准的 MySQL 客户端,或者使用各种语言的 MySQL 库、JDBC、ODBC 等连接Doris。本文以 MySQL client 为例,通过一个完整的流程向用户展示 Doris 的基本使用方法。

选择 MySQL client 版本时建议采用5.1 之后的版本,因为 5.1 之前不能支持长度超过 16 个字符的用户名。

您可以从这里下载 Linux 版本的 MySQL 客户端:mysql-5.7.22-linux-glibc2.12-x86_64。(解压后,在 bin/ 目录下有 mysql 二进制程序。)

创建用户和数据库

用户在创建 Doris 集群时设置的密码即为 Doris 的 admin 用户的密码。Doris 集群初始默认包含一个 admin 用户,用户可以通过 admin 用户和 Doris 进行初次连接。

mysql -hDORIS_HOST -PDORIS_PORT -uadmin -pyour_password

如果使用的是 8.0 以上版本的 MySQL 客户端,请添加参数:

mysql --default-auth=mysql_native_password -hDORIS_HOST -PDORIS_PORT -uadmin -pyour_password

这里的 host 和 port 为在 Doris 控制台页面给出的MySQL协议连接目标。如果用户绑定了 EIP,则替换为 EIP 即可。

admin 用户拥有集群的全部操作权限。建议仅管理员使用。管理员可以使用 admin 用户创建普通用户并授予相应的权限。

通过下面的命令创建一个普通用户。

CREATE USER 'jack' IDENTIFIED BY 'jack_passwd';

新创建的普通用户默认没有任何权限。我们接下来可以创建一个数据库并授权给用户 jack。

CREATE DATABASE example_db;
GRANT ALL ON example_db to "jack";


之后,我们可以使用 jack 用户进行登录并查看数据库。

mysql -hDORIS_HOST -PDORIS_PORT -ujack -pjack_passwordMySQL>SHOWDATABASES;
+--------------------+
| Database           |
+--------------------+
| example_db         |
| information_schema |
+--------------------+
2 rows in set (0.00 sec)


创建表

首先切换数据库:

USE example_db;

接下来创建一张表:

CREATE TABLE lineorder (
    lo_orderkey BIGINT,
    lo_linenumber BIGINT,
    lo_custkey INT,
    lo_partkey INT,
    lo_suppkey INT,
    lo_orderdate INT,
    lo_orderpriotity VARCHAR(16),
    lo_shippriotity INT,
    lo_quantity BIGINT,
    lo_extendedprice BIGINT,
    lo_ordtotalprice BIGINT,
    lo_discount BIGINT,
    lo_revenue BIGINT,
    lo_supplycost BIGINT,
    lo_tax BIGINT,
    lo_commitdate BIGINT,
    lo_shipmode VARCHAR(11)
)
DISTRIBUTED BY HASH(lo_orderkey)
PROPERTIES ("replication_num"="1");

这里我们创建一个 Star Schema Benchmark 中的 lineorder 表。使用 lo_orderkey 作为分桶列,并设置副本数为1。

默认建表的副本数为3,而当集群的 BE 节点数小于3时,副本数不得大于 BE 节点数。

表建完之后,可以查看 example_db 中表的信息:


MySQL> SHOW TABLES;
+----------------------+
| Tables_in_example_db |
+----------------------+
| lineorder            |
+----------------------+
2 rows in set (0.01 sec)
mysql> DESC lineorder;
+------------------+-------------+------+-------+---------+-------+
| Field            | Type        | Null | Key   | Default | Extra |
+------------------+-------------+------+-------+---------+-------+
| lo_orderkey      | BIGINT      | Yes  | true  | NULL    |       |
| lo_linenumber    | BIGINT      | Yes  | true  | NULL    |       |
| lo_custkey       | INT         | Yes  | true  | NULL    |       |
| lo_partkey       | INT         | Yes  | false | NULL    | NONE  |
| lo_suppkey       | INT         | Yes  | false | NULL    | NONE  |
| lo_orderdate     | INT         | Yes  | false | NULL    | NONE  |
| lo_orderpriotity | VARCHAR(16) | Yes  | false | NULL    | NONE  |
| lo_shippriotity  | INT         | Yes  | false | NULL    | NONE  |
| lo_quantity      | BIGINT      | Yes  | false | NULL    | NONE  |
| lo_extendedprice | BIGINT      | Yes  | false | NULL    | NONE  |
| lo_ordtotalprice | BIGINT      | Yes  | false | NULL    | NONE  |
| lo_discount      | BIGINT      | Yes  | false | NULL    | NONE  |
| lo_revenue       | BIGINT      | Yes  | false | NULL    | NONE  |
| lo_supplycost    | BIGINT      | Yes  | false | NULL    | NONE  |
| lo_tax           | BIGINT      | Yes  | false | NULL    | NONE  |
| lo_commitdate    | BIGINT      | Yes  | false | NULL    | NONE  |
| lo_shipmode      | VARCHAR(11) | Yes  | false | NULL    | NONE  |
+------------------+-------------+------+-------+---------+-------+
17 rows in set (0.02 sec)


导入数据

Doris 支持多种数据导入方式。具体可以参阅数据导入文档。这里我们使用 Broker 导入做示例。

Broker 导入通过集群内置的 Broker 进程,读取外部存储上的数据进行导入。更多帮助请参阅操作手册中关于 Broker 的介绍。

使用 Broker 导入需要预先将导入数据文件存放到百度对象存储 BOS 上。我们在这里准备了一份 lineorder 表的数据(约 100MB)。用户可以下载后上传到自己的 BOS 中。并开始导入。

lineorder数据示例

如何上传至 BOS 以及从 BOS 导入数据的详细文档可参阅 导入BOS中的数据。

假设用户存放导入文件的 BOS 路径为:bos://example_bucket/lineorder_1.tbl


则我们可以通过以下命令导入数据:

LOAD LABEL example_db.my_first_load
(
    DATA INFILE("bos://example_bucket/lineorder_1.tbl")
    INTO TABLE lineorder
)
WITH BROKER 'bos'
(
    "bos_endpoint" = "http://bj.bcebos.com",
    "bos_accesskey" = "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "bos_secret_accesskey"="yyyyyyyyyyyyyyyyyyyy"
);
  1. 公有云 Doris 集群的 Broker 名称为 bos。可以通过 SHOW BROKER; 查看。
  2. 本示例中 bos_endpointhttp://bj.bcebos.com。用户需根据不同的地域指定不同的 endpoint。
  3. accesskey 和 secret_accesskey 可以在公有云安全认证中心查看。

Broker 导入是异步命令。以上命令执行成功只表示提交任务成功。

导入是否成功需要根据导入 label,通过 SHOW LOAD 命令查看。本示例的 label 为

my_first_load:
SHOW LOAD WHERE LABLE = "my_first_load";

返回结果中,State 字段为 FINISHED 则表示导入成功。之后我们就可以查询数据了。

数据的查询

Doris 支持绝大部分 SQL 92 和 99 标准中的 SQL 语法,以及部分 SQL 2003 标准中的语法。基本可以涵盖绝大部分 SQL 使用场景。以下通过一些简单的示例进行展示。

简单查询

示例:

MySQL> SELECT * FROM table1 LIMIT 3;
+--------+----------+----------+------+
| siteid | citycode | username | pv   |
+--------+----------+----------+------+
|      2 |        1 | 'grace'  |    2 |
|      5 |        3 | 'helen'  |    3 |
|      3 |        2 | 'tom'    |    2 |
+--------+----------+----------+------+
5 rows in set (0.01 sec)
MySQL> SELECT * FROM table1 ORDER BY citycode;
+--------+----------+----------+------+
| siteid | citycode | username | pv   |
+--------+----------+----------+------+
|      2 |        1 | 'grace'  |    2 |
|      1 |        1 | 'jim'    |    2 |
|      3 |        2 | 'tom'    |    2 |
|      4 |        3 | 'bush'   |    3 |
|      5 |        3 | 'helen'  |    3 |
+--------+----------+----------+------+
5 rows in set (0.01 sec)


Join 查询

示例:

MySQL> SELECT SUM(table1.pv) FROM table1 JOIN table2 WHERE table1.siteid = table2.siteid;
+--------------------+
| sum(`table1`.`pv`) |
+--------------------+
|                 12 |
+--------------------+
1 row in set (0.20 sec)

子查询

示例:

MySQL> SELECT SUM(pv) FROM table2 WHERE siteid IN (SELECT siteid FROM table1 WHERE siteid > 2);
+-----------+
| sum(`pv`) |
+-----------+
|         8 |
+-----------+
1 row in set (0.13 sec)
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
数据采集 消息中间件 存储
3秒学不会Palo Doris的数据导入你打我!(四)
3秒学不会Palo Doris的数据导入你打我!
452 0
|
29天前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
36 0
|
29天前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
67 0
|
6月前
|
关系型数据库 MySQL Java
实时计算 Flink版产品使用合集之通过BE的IP进行连接,而不通过FE进行转换,具体的操作步骤是怎样的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL 分布式计算 Java
实时数仓 Hologres产品使用合集之ologres holostudio为什么不支持max_pt('table')取最大分区这个方法
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
6月前
|
分布式计算 关系型数据库 MySQL
实时计算 Flink版产品使用合集之配置Debezium的table.exclude.list不生效是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
消息中间件 Java 数据库连接
实时计算 Flink版产品使用合集之将sdkMode从rpc模式改为jdbc模式后,table.exec.mini-batch.enabled参数还生效吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
监控 Java 流计算
读Flink源码谈设计:Metric
前阵子笔者涉及了些许监控相关的开发工作,在开发过程中也碰到过些许问题,便翻读了Flink相关部分的代码,在读代码的过程中发现了一些好的设计,因此也是写成文章整理上来。
396 0
读Flink源码谈设计:Metric
|
数据库 流计算
在Flink CDC中,本地模式(Local Mode)是指Flink任务在单个节点上运行
在Flink CDC中,本地模式(Local Mode)是指Flink任务在单个节点上运行
182 1
|
SQL 数据安全/隐私保护 UED
Palo Doris版五分钟快速入门!
Palo Doris版五分钟快速入门!
240 0
Palo Doris版五分钟快速入门!