当 Kyuubi 遇上 TiDB :如何在本地环境完成集成

网易杭研 2022-08-09 14:18:41

 TiDB 是 PingCAP 公司研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品。

TiSpark 是基于 Spark Datasource V2 和  Catalog APIs 实现的插件,可以在 TiDB/TiKV 上进行复杂 OLAP 查询。

本文主要介绍如何在本地环境完成 Kyuubi Spark SQL Engine 与 TiDB 的集成,以及 TiSpark 插件的基本功能。

想要进一步了解 TiDB 和 TiSpark 的读者,可以阅读 TiDB 和 TiSpark 的官方文档,或者他们的 github 项目。

01 搭建环境

 第一步:搭建 TiDB 集群 

首先安装 TiDB 官方 提供的 TiUP 工具。(https://docs.pingcap.com/zh/tidb/stable/tiup-overview)
一行命令搞定。

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

再用一行命令完成 TiDB 的安装和启动。

tiup playground

启动时会输出各组件的地址

CLUSTER START SUCCESSFULLY, Enjoy it ^-^To connect TiDB: mysql --comments --host 127.0.0.1 --port 4000 -u root -p (no password)To view the dashboard: http://127.0.0.1:2379/dashboardPD client endpoints: [127.0.0.1:2379]To view the Prometheus: http://127.0.0.1:9090To view the Grafana: http://127.0.0.1:3000

从 dashboard 上可以看到 TiDB 的所有组件都已启动。

 第二步:安装 Kyuubi

Kyuubi 的安装和 Kyuubi Spark SQL Engine 的配置 官方文档 有详细介绍(https://kyuubi.readthedocs.io/en/latest/quick_start/quick_start.html)。

第三步:配置 TiSpark 插件包

从 Maven 仓库   (https://repo1.maven.org/maven2/com/pingcap/tispark/)下载与 Spark 版本对应的 TiSpark 插件包。文件名格式为:tispark-assembly-_-.jar。例如:tispark-assembly-3.2_2.12-3.0.1.jar。

注意 TiSpark 与 TiDB 和 Spark 的版本配套关系。可以从 官方文档 查到 (https://docs.pingcap.com/zh/tidb/stable/tispark-overview#%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87)。

选择以下任意一种方式,将 TiSpark 插件包加入 Spark classpath :

  1. 放入 Spark 的 jars 目录

  2. 添加配置 spark.jars=/path/to/tispark-assembly

第四步:添加 TiSpark 配置

spark-defaults.conf 中需要添加以下配置:

spark.sql.extensions org.apache.spark.sql.TiExtensionsspark.tispark.pd.addresses 127.0.0.1:2379spark.sql.catalog.tidb_catalog org.apache.spark.sql.catalyst.catalog.TiCatalogspark.sql.catalog.tidb_catalog.pd.addresses 127.0.0.1:2379

第五步:准备一些数据

使用 TiUP 命令生成 TPC-H 数据集。默认会生成到 test 数据库。

tiup bench tpch prepare --host 127.0.0.1 --user root

 

02 查询验证

至此,Kyuubi Spark SQL Engine 与 TiDB 的集成已基本完成。我们可以通过 Kyuubi 的 beeline 命令行工具查询 TiDB 中的数据。

 2.1 Command

Connected to: Apache Kyuubi (Incubating) (version 1.4.1-incubating)Driver: Kyuubi Project Hive JDBC Shaded Client (version 1.4.1-incubating)Beeline version 1.4.1-incubating by Apache Kyuubi (Incubating)0: jdbc:hive2://localhost:10009/> use tidb_catalog.test;+---------+| Result  |+---------++---------+No rows selected (0.361 seconds)0: jdbc:hive2://localhost:10009/> show tables;+------------+------------+--------------+| namespace  | tableName  | isTemporary  |+------------+------------+--------------+| test       | nation     | false        || test       | region     | false        || test       | part       | false        || test       | supplier   | false        || test       | partsupp   | false        || test       | customer   | false        || test       | orders     | false        || test       | lineitem   | false        |+------------+------------+--------------+8 rows selected (0.223 seconds)0: jdbc:hive2://localhost:10009/> desc nation;+------------------+------------+----------+|     col_name     | data_type  | comment  |+------------------+------------+----------+| n_nationkey      | bigint     |          || n_name           | string     |          || n_regionkey      | bigint     |          || n_comment        | string     |          ||                  |            |          || # Partitioning   |            |          || Not partitioned  |            |          |+------------------+------------+----------+7 rows selected (0.133 seconds)

 2.2 SELECT

0: jdbc:hive2://localhost:10009/> select * from nation limit 5;+--------------+------------+--------------+----------------------------------------------------+| n_nationkey  |   n_name   | n_regionkey  |                     n_comment                      |+--------------+------------+--------------+----------------------------------------------------+| 0            | ALGERIA    | 0            |  haggle. carefully final deposits detect slyly agai || 1            | ARGENTINA  | 1            | al foxes promise slyly according to the regular accounts. bold requests alon || 2            | BRAZIL     | 1            | y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special  || 3            | CANADA     | 1            | eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold || 4            | EGYPT      | 4            | y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d |+--------------+------------+--------------+----------------------------------------------------+5 rows selected (0.518 seconds)

 2.3 DELETE

0: jdbc:hive2://localhost:10009/> delete from nation where n_nationkey = 0;+---------+| Result  |+---------++---------+No rows selected (1.115 seconds)

 2.4 不支持的查询类型

目前,TiSpark(3.0.1版本)对 Spark Datasource V2 和 Catalog APIs 的适配还处在不断完善的过程中。一些常用的SQL语法,比如 CREATE TABLE、INSERT INTO/INSERT OVERWRITE 尚未支持。批量写入只能通过 DataFrame APIs 实现。

03 参考资料

  • TiUP 简介:https://docs.pingcap.com/zh/tidb/dev/tiup-overview

  • TiSpark 用户指南:https://docs.pingcap.com/zh/tidb/dev/tispark-overview

  • TiSpark Feature Support Detail:https://github.com/pingcap/tispark/wiki/Feature-Support-Detail

  • TiDB : https://kyuubi.readthedocs.io/en/latest/connector/spark/tidb.html

...全文
303 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

332

社区成员

发帖
与我相关
我的任务
社区描述
专注数字化转型基础软件,包括云原生、低代码、大数据、AI等。已开源项目:Apache Kyuubi,Curve,Arctic,Loggie,Slime,Hango,KubeCube,KubeDiag
开源大数据云原生 企业社区
社区管理员
  • 网易杭研
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧