tencent cloud

腾讯云数据仓库 TCHouse-D

产品简介
产品概述
基本概念
集群架构
产品优势
应用场景
购买指南
计费概述
续费说明
到期与欠费说明
退费说明
配置变更计费说明
快速入门
通过控制台使用腾讯云数据仓库 TCHouse-D
通过客户端使用腾讯云数据仓库 TCHouse-D
操作指南
集群操作
监控和告警配置
账户权限管理
数据管理
查询管理
配置管理
节点管理
日志分析
SQL 工作区
开启资源隔离
开发指南
数据表设计
数据导入
数据导出
基础功能
查询优化
生态扩展功能
API 文档
History
Introduction
API Category
Making API Requests
Cluster Operation APIs
Database and Table APIs
Cluster Information Viewing APIs
Hot-Cold Data Layering APIs
Database and Operation Audit APIs
User and Permission APIs
Resource Group Management APIs
Data Types
Error Codes
云上生态
为子账号授予 CAM 策略
查询加速腾讯云 DLC
实践教程
基本功能使用
高级特性使用
资源规格选型及调优建议
命名规范及库表限制
表设计与数据导入
查询调优
建议规避的用法
通过 JDBC 方式公网访问 TCHouse-D
性能测试
TPC-H 性能测试
SSB 性能测试
TPC-DS 性能测试
常见问题
常见操作问题
常见报错
联系我们
词汇表
产品协议
服务等级协议
隐私政策
数据处理和安全协议
文档腾讯云数据仓库 TCHouse-D快速入门通过客户端使用腾讯云数据仓库 TCHouse-D

通过客户端使用腾讯云数据仓库 TCHouse-D

PDF
聚焦模式
字号
最后更新时间: 2024-06-27 10:45:22
除控制台操作外,您也可基于 JDBC 和 WebUI 两种方式,通过客户端使用腾讯云数据仓库 TCHouse-D。购买创建集群后,从 集群列表 页面单击 集群 ID/名称 可以进入集群详情页,网络信息部分提供两个访问地址:JDBC & HTTP,分别对应了两类客户端。其中:
JDBC 连接地址适合 JDBC 类客户端,如常用的 MySQL 客户端。
HTTP 连接地址则用于通过 WebUI 调用集群的 REST API 进行各种操作。




JDBC 类客户端(MySQL Clinet 等)

腾讯云数据仓库 TCHouse-D 采用 MySQL 协议进行通信,用户可通过 MySQL Client 或者 MySQL JDBC 连接到集群。选择 MySQL Client 版本时建议采用5.1 之后的版本,因为5.1之前不能支持长度超过 16 个字符的用户名。
注意:
只要支持 MySQL JDBC 协议的客户端都可使用,不过可能存在集群返回信息没有被此客户端原样展示的情况。该现象一般不会造成问题,但可能由于部分信息未被展示,造成对操作结果的误判。
例如,执行 Broker Load 后返回信息中的 Warning 在某些客户端中未被展示,可能会让使用者误以为没有 Warning(即没有被过滤的数据)。
下面展示通过 MySQL Client 连接到腾讯云数据仓库 TCHouse-D 的基本流程。

步骤1:创建用户

1. 购买并创建腾讯云数据仓库TCHouse-D 集群时,需设定 admin 用户的密码。

2. 集群创建后,您可在控制台中便捷查看集群信息,开展新建账户等操作。您可以使用 admin 用户连接集群,也可以新建用户并以子用户连接。

3. 集群运行中,您可在网络联通的环境下使用 MySQL Client 连接到集群。集群详情页中,支持一键复制连接地址,若您希望通过子用户连接或重置密码,均可在控制台中 账户管理 页面操作。

4. 输入以下命令,可登录到集群:
mysql -h FE_HOST -P9030 -uadmin -p
说明:
FE_HOST 是任一 FE 节点的 IP 地址。9030是 fe.conf 中的 query_port 配置。
5. 登录后,也可以通过以下命令修改 admin 密码:
SET PASSWORD FOR 'admin' = PASSWORD('your_password');
6. 创建新用户:
CREATE USER 'test' IDENTIFIED BY 'test_passwd';
7. 可通过以下命令,使用新创建用户连接集群:
mysql -h FE_HOST -P9030 -utest -ptest_passwd
说明:
新创建的普通用户默认没有任何权限,您可在控制台 账户管理 页面操作授权。

步骤2:数据表创建

1. 创建数据库。 初始可以通过 admin 用户创建数据库:CREATE DATABASE example_db;
说明:
所有命令都可以使用 'HELP command;' 查看到详细的语法帮助。如:HELP CREATE DATABASE;
如果不清楚命令的全名,可以使用 "help 命令某一字段" 进行模糊查询。如键入 'HELP CREATE',可以匹配到 CREATE DATABASE, CREATE TABLECREATE USER 等命令。
数据库创建完成之后,可以通过 SHOW DATABASES; 查看数据库信息。
MySQL> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| doris_audit_db__ |
| example_db |
| information_schema |
+--------------------+
3 rows in set (0.00 sec)
information_schema 是为了兼容 MySQL 协议而存在,实际中信息可能不是很准确,所以关于具体数据库的信息建议通过直接查询相应数据库而获得。
2. 账户授权。 example_db 创建完成之后,可以通过 admin 账户将 example_db 读写权限授权给普通账户,如 test。授权之后采用 test 账户登录就可以操作 example_db 数据库了。
GRANT ALL ON example_db TO test;
3. 建表。
首先切换数据库:
USE example_db;
使用 CREATE TABLE 命令建立一个表。腾讯云数据仓库 TCHouse-D 支持单分区和复合分区两种建表方式,具体参见 数据分区和分桶。下面以聚合模型为例,分别演示两种分区的建表语句。 单分区 建立一个名字为 table1 的逻辑表。分桶列为 siteid,桶数为 10,表的 schema 如下:
siteid:类型是 INT(4字节),默认值为10。
citycode:类型是 SMALLINT(2字节)。
username:类型是 VARCHAR,最大长度为32,默认值为空字符串。
pv:类型是 BIGINT(8字节),默认值是0;这是一个指标列,数据会默认做聚合操作,聚合方法是求和(SUM)。
建表语句如下:
CREATE TABLE table1
(
siteid INT DEFAULT '10',
citycode SMALLINT,
username VARCHAR(32) DEFAULT '',
pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(siteid,citycode,username)
DISTRIBUTED BY HASH(siteid) BUCKETS 10
PROPERTIES("replication_num" = "1");
复合分区 建立一个名字为 table2 的逻辑表,表的 schema 如下:
event_day:类型是 DATE,无默认值。
siteid:类型是 INT(4字节),默认值为10。
citycode:类型是 SMALLINT(2字节)。
username:类型是 VARCHAR,最大长度为32,默认值为空字符串。
pv:类型是 BIGINT(8字节),默认值是0;这是一个指标列,数据会默认做聚合操作,聚合方法是求和(SUM)。
使用 event_day 列作为分区列,建立3个分区: p201706、p201707、p201708,每个分区使用 siteid 进行哈希分桶,桶数为10。
p201706:范围为 [最小值,2017-07-01)
p201707:范围为 [2017-07-01,2017-08-01)
p201708:范围为 [2017-08-01,2017-09-01)
建表语句如下:
CREATE TABLE table2
(
event_day DATE,
siteid INT DEFAULT '10',
citycode SMALLINT,
username VARCHAR(32) DEFAULT '',
pv BIGINT SUM DEFAULT '0'
)
AGGREGATE KEY(event_day, siteid, citycode, username)
PARTITION BY RANGE(event_day)
(
PARTITION p201706 VALUES LESS THAN ('2017-07-01'),
PARTITION p201707 VALUES LESS THAN ('2017-08-01'),
PARTITION p201708 VALUES LESS THAN ('2017-09-01')
)
DISTRIBUTED BY HASH(siteid) BUCKETS 10
PROPERTIES("replication_num" = "1");
表建完之后,可以查看 example_db 中表的信息:
MySQL> SHOW TABLES;
+----------------------+
| Tables_in_example_db |
+----------------------+
| table1 |
| table2 |
+----------------------+
2 rows in set (0.01 sec)

MySQL> DESC table1;
+----------+-------------+------+-------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-------+---------+-------+
| siteid | int(11) | Yes | true | 10 | |
| citycode | smallint(6) | Yes | true | N/A | |
| username | varchar(32) | Yes | true | | |
| pv | bigint(20) | Yes | false | 0 | SUM |
+----------+-------------+------+-------+---------+-------+
4 rows in set (0.00 sec)

MySQL> DESC table2;
+-----------+-------------+------+-------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-------+---------+-------+
| event_day | date | Yes | true | N/A | |
| siteid | int(11) | Yes | true | 10 | |
| citycode | smallint(6) | Yes | true | N/A | |
| username | varchar(32) | Yes | true | | |
| pv | bigint(20) | Yes | false | 0 | SUM |
+-----------+-------------+------+-------+---------+-------+
5 rows in set (0.00 sec)
注意:
上述表通过设置 replication_num 建的都是单副本的表,腾讯云数据仓库 TCHouse-D 建议用户采用默认的 3 副本设置,以保证高可用。

步骤3:数据导入

腾讯云数据仓库 TCHouse-D 支持多种数据导入方式。具体可以参阅数据导入。这里给出流式导入和 Broker 导入的示例。

流式导入

流式导入通过 HTTP 协议向 TCHouse-D 传输数据,可以不依赖其他系统或组件直接导入本地数据。详细语法帮助可以参阅 HELP STREAM LOAD;。 示例1:以 "table1_20170707" 为 Label,使用本地文件 table1_data 导入 table1 表。
curl --location-trusted -u test:test_passwd -H "label:table1_20170707" -H "column_separator:," -T table1_data http://FE_HOST:8030/api/example_db/table1/_stream_load
注意:
FE_HOST 是任一 FE 所在节点 IP,8030 为 fe.conf 中的 http_port。
可以使用任一 BE 的 IP,以及 be.conf 中的 webserver_port 进行导入。如:BE_HOST:8040。
本地文件 table1_data 以 ,作为数据之间的分隔,具体内容如下:
1,1,jim,2
2,1,grace,2
3,2,tom,2
4,3,bush,3
5,3,helen,3
示例2:以 "table2_20170707" 为 Label,使用本地文件 table2_data 导入 table2 表。
curl --location-trusted -u test:test -H "label:table2_20170707" -H "column_separator:|" -T table2_data
http://127.0.0.1:8030/api/example_db/table2/_stream_load
本地文件 table2_data|作为数据之间的分隔,具体内容如下:
2017-07-03|1|1|jim|2
2017-07-05|2|1|grace|2
2017-07-12|3|2|tom|2
2017-07-15|4|3|bush|3
2017-07-12|5|3|helen|3
注意:
采用流式导入建议文件大小限制在 10GB 以内,过大的文件会导致失败重试代价变大。
每一批导入数据都需要取一个 Label,Label 最好是一个和一批数据有关的字符串,方便阅读和管理。腾讯云数据仓库 TCHouse-D 基于 Label 保证在一个 Database 内,同一批数据只可导入成功一次。失败任务的 Label 可以重用.
流式导入是同步命令。命令返回成功则表示数据已经导入,返回失败表示这批数据没有导入。

Broker 导入

Broker 导入通过部署的 Broker 进程,读取外部存储上的数据进行导入。更多帮助请参阅 HELP BROKER LOAD;。 示例:以 "table1_20170708" 为 Label,将 HDFS 上的文件导入 table1 表。
LOAD LABEL table1_20170708
(
DATA INFILE("hdfs://your.namenode.host:port/dir/table1_data")
INTO TABLE table1
)
WITH BROKER hdfs
(
"username"="hdfs_user",
"password"="hdfs_password"
)
PROPERTIES
(
"timeout"="3600",
"max_filter_ratio"="0.1"
);
Broker 导入是异步命令。以上命令执行成功只表示提交任务成功。导入是否成功需要通过SHOW LOAD;查看。如:
SHOW LOAD WHERE LABEL = "table1_20170708";
返回结果中,State 字段为 FINISHED 则表示导入成功。关于 SHOW LOAD 的更多说明,可以参阅 HELP SHOW LOAD;。 异步的导入任务在结束前可以取消:CANCEL LOAD WHERE LABEL = "table1_20170708";

步骤4:数据查询

1. 简单查询:
MySQL> SELECT * FROM table1 LIMIT 3;
+--------+----------+----------+------+
| siteid | citycode | username | pv |
+--------+----------+----------+------+
| 2 | 1 | 'grace' | 2 |
| 5 | 3 | 'helen' | 3 |
| 3 | 2 | 'tom' | 2 |
+--------+----------+----------+------+
3 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)
2. 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)
3. 子查询:
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)

Web UI

Web UI 基于 JDBC 和 Rest API 能力实现,您可通过在其中进行数据操作和集群管控等功能。要使用 Web UI,可在网络打通环境下输入 https:// fe_ip:8030,当看到如下页面时说明启动成功。
image-20220822091951739

Web UI 分为 Playgroud、System、Log、QueryProfile、Session、Configuration 几大功能页。
Playgroud 中提供一个 SQL 查询编辑器,用于执行各种 SQL 命令。左侧以树形结构展示所有数据库和其下的表。双击表名可查看表的元数据和数据样例,单击Data Import后可从本地上传数据。

System 页面可查看集群的各种系统信息。

Log 页面提供了 FE 日志的展示与管理功能。

QueryProfile 页面展示了记录到 Profile 的 SQL,可查看 SQL 整体以及其中各个 Instance 的执行计划及运行数据。


Session 页面展示了当前活动的所有会话的信息。

Configuration 页面可查看 FE 的所有配置信息,在配置值一列中提供了过滤功能。




帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈