332
社区成员
发帖
与我相关
我的任务
分享
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 项目。
第一步:搭建 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 :
放入 Spark 的 jars 目录
添加配置 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
至此,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 实现。
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