上云无忧 > 文档中心 > 百度数据仓库 Palo 使用教程(基础篇)
百度数据仓库 Palo Doris版
百度数据仓库 Palo 使用教程(基础篇)

文档简介:
在快速入门教程中,我们通过 PALO 的 UI 界面完成了 PALO 的一些基本操作。而在实际生产环境中,用户通常需要使用程序连接到 PALO 并进行各种操作。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

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

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

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

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

创建用户和数据库

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

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 为在 PALO 控制台页面给出的MySQL协议连接目标。如果用户绑定了 EIP,则替换为 EIP 即可。

注:百度内网专线用户请联系 PALO 值班同学获取连接目标的 IP。

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_password

MySQL> SHOW DATABASES; +--------------------+ | 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)

导入数据

PALO 支持多种数据导入方式。具体可以参阅数据导入文档。这里我们使用 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. 公有云 PALO 集群的 Broker 名称为 bos。可以通过 SHOW BROKER; 查看。
  2. 本示例中 bos_endpoint 为 http://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 则表示导入成功。之后我们就可以查询数据了。

数据的查询

PALO 支持绝大部分 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)

相似文档
  • 在本文档中,我们将罗列 PALO 一些常用的高级特性,帮助用户对 PALO 有一个更全面的了解。 部分特性的具体使用说明,我们会在单独的文档中介绍。 关系表和分区分桶: 在 PALO 中,用户数据是以二维关系表的方式存储的。并且基于 PALO 的 Shard-Nothing 分布式架构,一张表的数据会根据用户指定的分区和分桶方式,水平切分成多个数据分片(Tablet),存储在不同节点上。
  • 本文档主要介绍 PALO 的建表和数据划分,以及建表操作中可能遇到的问题和解决方法。 基本概念: 在 PALO 中,数据都以关系表(Table)的形式进行逻辑上的描述。
  • 本文档主要从逻辑层面描述 DORIS 的数据模型以帮助用户更好的使用 DORIS 应对不同的业务场景。 基本概念: 在 DORIS 中,数据以表(Table)的形式进行逻辑上的描述。 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。
  • 索引用于帮助快速过滤或查找数据。 目前 PALO 主要支持两类索引:内建的智能索引,包括前缀索引和ZoneMap索引。用户创建的二级索引,包括Bloom Filter索引和Bitmap倒排索引。
  • 支持的数据源: PALO 提供多种数据导入方案,可以针对不同的数据源进行选择。 数据导入总体说明: PALO 的数据导入实现有以下共性特征,这里分别介绍,以帮助大家更好的使用数据导入功能 原子性保证: PALO 的每一个导入作业,不论是使用 Broker Load 进行批量导入,还是使用 INSERT 语句进行单条导入,都是一个完整的事务操作。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部