TiDB
TiDB 是一个开源的 NewSQL 数据库,支持混合事务与分析处理(HTAP)工作负载。
TiSpark 是一个轻量级层,构建在 TiDB/TiKV 之上运行 Apache Spark,用于处理复杂的 OLAP 查询。它兼具 Spark 平台和 TiKV 分布式集群的优势,并与 TiDB 无缝集成,为在线事务和分析提供一站式的 HTAP 解决方案。
提示
本文假设你已掌握 TiDB 和 TiSpark 的基本知识与操作。对于本文中未涉及的知识,你可以从 TiDB 官方文档中获取。
通过使用 Kyuubi,我们可以直接对 TiDB/TiKV 执行 SQL 查询,这比直接使用 Spark 操作 TiDB/TiKV 更加便捷、易懂且易于扩展。
TiDB 集成
要通过 Apache Spark Datasource V2 和 Catalog API 启用 Kyuubi Spark SQL 引擎与 TiDB 的集成,你需要:
依赖
支持 TiDB 的 Kyuubi Spark SQL 引擎的 classpath 由以下部分组成:
- kyuubi-spark-sql-engine-1.9.1_2.12.jar,随 Kyuubi 发行版部署的引擎 jar
- Spark 发行版的一份拷贝
- tispark-assembly-<spark.version>_<scala.version>-<tispark.version>.jar(示例:tispark-assembly-3.2_2.12-3.0.1.jar),可在 Maven Central 中找到
为了使 TiSpark 包对引擎的运行时 classpath 可见,我们可以使用以下任一方法:
- 将 TiSpark 包直接放入
$SPARK_HOME/jars - 设置
spark.jars=/path/to/tispark-assembly
警告
请注意不同 TiDB、TiSpark 和 Spark 版本之间的兼容性,可在 TiSpark 环境搭建页面确认。
配置
要启用 TiSpark 的功能,我们可以设置以下配置:
spark.tispark.pd.addresses $pd_host:$pd_port
spark.sql.extensions org.apache.spark.sql.TiExtensions
spark.sql.catalog.tidb_catalog org.apache.spark.sql.catalyst.catalog.TiCatalog
spark.sql.catalog.tidb_catalog.pd.addresses $pd_host:$pd_portspark.tispark.pd.addresses 和 spark.sql.catalog.tidb\_catalog.pd.addresses 配置项允许你填入多个 PD 服务器地址,需要为每个地址指定端口号。
例如,当你的多个 PD 服务器位于 10.16.20.1、10.16.20.2、10.16.20.3,端口均为 2379 时,应填写为 10.16.20.1:2379,10.16.20.2:2379,10.16.20.3:2379。
TiDB 操作
以 SELECT 为例,
SELECT * FROM foo;以 DELETE FROM 为例,Spark 3 新增了对 DELETE FROM 查询的支持,用于从表中删除数据。
DELETE FROM foo WHERE id >= 1 and id < 2;注意
截至目前(TiSpark 3.0.1),TiSpark 不支持通过 Apache Spark Datasource V2 和 Catalog API 执行 CREATE TABLE、INSERT INTO/OVERWRITE 操作。
评论
登录后参与评论
KnowForge