当前位置:网站首页>如何在 TiDB Cloud 上使用 Databricks 进行数据分析 | TiDB Cloud 使用指南
如何在 TiDB Cloud 上使用 Databricks 进行数据分析 | TiDB Cloud 使用指南
2022-07-30 13:51:00 【TiDB_PingCAP】
作者丨吴强(PingCAP TiDB Cloud 团队工程师)
编辑丨Calvin Weng、Tom Dewan
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nXpsszry-1658980040384)(https://en.pingcap.com/wp-content/uploads/2022/06/tidbcloud-databricks-768x256.jpg)]
TiDB Cloud 是为开源分布式数据库 TiDB 打造的全托管 DBaaS (Database-as-a-Service) 服务。
Databricks 是一款搭载 Spark,并基于网页的数据分析平台。Databricks 的数据湖仓架构集成了业界最优秀的数据仓库和数据湖。
借助 Databricks 内置的 JDBC 驱动程序,只需几分钟即可将 TiDB Cloud 对接到 Databricks,随后可以通过 Databricks 分析 TiDB 中的数据。本文主要介绍如何创建 TiDB Cloud Developer Tier 集群、如何将 TiDB 对接到 Databricks,以及如何使用 Databricks 处理 TiDB 中的数据。
设置 TiDB Cloud Dev Tier 集群
使用 TiDB Cloud 前,需进行以下操作:
注册 TiDB Cloud 账号并登录。
在 Create Cluster > Developer Tier 菜单下,选择 1 year Free Trial。
设置集群名称,并为集群选择区域。
单击 Create。大约 1~3 分钟后,TiDB Cloud 集群创建成功。
在 Overview 面板,单击 Connect 并创建流量过滤器。例如,添加 IP 地址 0.0.0.0/0,允许所有 IP 访问。
JDBC URL 稍后将在 Databricks 中使用,请做好记录。
将样例数据导入 TiDB Cloud
创建集群后,即可导入样例数据到 TiDB Cloud。我们将使用共享单车平台 Capital Bikeshare 的系统样例数据集作为演示。样例数据的使用完全遵循 Capital Bikeshare 公司的数据许可协议。
在集群信息窗格,单击 Import。随后,将出现 Data Import Task 页面。
按如下所示配置导入任务:
Data Source Type :
Amazon S3Bucket URL :
s3://tidbcloud-samples/data-ingestion/Data Format :
TiDB DumplingRole-ARN :
arn:aws:iam::385595570414:role/import-sample-access
配置 Target Database 时,键入 TiDB 集群的 Username 和 Password。
单击 Import,开始导入样例数据。整个过程将持续大约 3 分钟。
返回概览面板,单击 Connect to Get the MyCLI URL。
使用 MyCLI 客户端检查样例数据是否导入成功:
$ mycli -u root -h tidb.xxxxxx.aws.tidbcloud.com -P 4000
(none)> SELECT COUNT(*) FROM bikeshare.trips;
+----------+
| COUNT(*) |
+----------+
| 816090 |
+----------+
1 row in set
Time: 0.786s
使用 Databricks 连接 TiDB Cloud
开始之前,请确保您已经使用自己的账号登录到 Databricks 工作区。如果您没有 Databricks 账号,请先免费注册一个。如果您拥有丰富的 Databricks 使用经验,并且想直接导入笔记本,可跳过(可选)将 TiDB Cloud 样例笔记本导入 Databricks。
在本章节中,我们将创建一个新的 Databricks Notebook,并将它关联到一个 Spark 集群,随后通过 JDBC URL 将创建的笔记本连接到 TiDB Cloud。
- 在 Databricks 工作区,按如下所示方式创建并关联 Spark 集群:

- 在 Databricks 笔记本中配置 JDBC。TiDB 可以使用 Databricks 默认的 JDBC 驱动程序,因此无需配置驱动程序参数:
%scala
val url = "jdbc:mysql://tidb.xxxx.prod.aws.tidbcloud.com:4000"
val table = "bikeshare.trips"
val user = "root"
val password = "xxxxxxxxxx"
配置参数说明如下:
url:用于连接 TiDB Cloud 的 JDBC URL
table:指定数据表,例如: d a t a b a s e . {database}. database.{table}
user:用于连接 TiDB Cloud 的 用户名
password:用户的密码
- 检查 TiDB Cloud 的连通性:
%scala
import java.sql.DriverManager
val connection = DriverManager.getConnection(url, user, password)
connection.isClosed()
res2: Boolean = false
在 Databricks 中分析数据
只要成功建立连接,即可将 TiDB 数据加载为 Spark DataFrame,并在 Databricks 中分析这些数据。
- 创建一个 Spark DataFrame 用于加载 TiDB 数据。这里,我们将引用在之前步骤中定义的变量:
%scala
val remote_table = spark.read.format("jdbc")
.option("url", url)
.option("dbtable", table)
.option("user", user)
.option("password", password)
.load()
- 查询数据。Databricks 提供强大的图表显示功能,您可以自定义图表类型:
%scala
display(remote_table.select("*"))

- 创建一个 DataFrame 视图或一张 DataFrame 表。我们创建一个名为 “trips” 的视图作为示例:
%scala
remote_table.createOrReplaceTempView("trips")
- 使用 SQL 语句查询数据。以下语句将查询每种类型单车的数量:
%sql
SELECT rideable_type, COUNT(*) count FROM trips GROUP BY rideable_type ORDER BY count DESC
- 将分析结果写入 TiDB Cloud:
%scala
spark.table("type_count")
.withColumnRenamed("type", "count")
.write
.format("jdbc")
.option("url", url)
.option("dbtable", "bikeshare.type_count")
.option("user", user)
.option("password", password)
.option("isolationLevel", "NONE")
.mode(SaveMode.Append)
.save()
将 TiDB Cloud 样例笔记本导入 Databricks
我们使用的 TiDB Cloud 样例笔记本包含使用 Databricks 连接 TiDB Cloud 和在 Databricks 中分析 TiDB 数据两个步骤。您可以直接导入该样例笔记本,以便聚焦于分析过程。
在 Databricks 工作区,单击 Create > Import,并粘贴 TiDB Cloud 样例 URL,将笔记本下载到您的 Databricks 工作区。
将该笔记本关联到您的 Spark 集群。
使用您自己的 TiDB Cloud 集群信息替换样例中的 JDBC 配置。
按照笔记本中的步骤,通过 Databricks 使用 TiDB Cloud。
总结
本文主要介绍了如何通过 Databricks 使用 TiDB Cloud。
同时,我们正在编写另一个教程,用来介绍如何通过 TiSpark(TiDB/TiKV 上层用于运行 Apache Spark 的轻量查询层,项目链接:https://github.com/pingcap/tispark)在 TiDB 上使用 Databricks 进行数据分析,敬请期待。
原文链接:https://en.pingcap.com/blog/analytics-on-tidb-cloud-with-databricks/
边栏推荐
- A new generation of open source free terminal tools, so cool
- NFTScan 与 PANews 联合发布多链 NFT 数据分析报告
- shell 编程规范与变量
- Why did I switch from developer to testing, 3 years software testing engineer, tell you the secret of this
- 为什么做软件测试一定要学自动化?谈谈我眼中自动化测试的价值
- 重保特辑|筑牢第一道防线,云防火墙攻防演练最佳实践
- Eclipse connects to SQL server database "recommended collection"
- “12306” 的架构到底有多牛逼
- 2022年,目前大环境下还适合转行软件测试吗?
- LeetCode二叉树系列——515.最每个树行中找最大值
猜你喜欢

LeetCode二叉树系列——144.二叉树的最小深度

mongodb打破原则引入SQL,它到底想要干啥?

重保特辑|拦截99%恶意流量,揭秘WAF攻防演练最佳实践

经典测试面试题集—逻辑推理题

Teach you how to write an eye-catching software testing resume, if you don't receive an interview invitation, I will lose

网络安全——lcx的使用

以unity3d为例解读:游戏数据加密

无代码开发平台应用可见权限设置入门教程

我为何从开发人员转做测试,3年软件测试工程师,带你聊聊这其中的秘辛

Six-faced ant financial clothing, resisting the bombardment of the interviewer, came to interview for review
随机推荐
jsArray array copy method performance test 2207292307
UPC2022 Summer Individual Training Game 19 (B, P)
Logic Vulnerability----Permission Vulnerability
“12306” 的架构到底有多牛逼
ML之PDP:基于FIFA 2018 Statistics(2018年俄罗斯世界杯足球赛)球队比赛之星分类预测数据集利用DT决策树&RF随机森林+PDP部分依赖图可视化实现模型可解释性之详细攻略
The truth of the industry: I will only test those that have no future, and I panic...
jsArray array copy method performance test 2207300040
cookie模拟登录「建议收藏」
时间序列的数据分析(四):STL分解
A new generation of open source free terminal tools, so cool
Eleven BUUCTF questions (06)
Classic test interview questions set - logical reasoning questions
【ROS进阶篇】第十一讲 基于Gazebo和Rviz的机器人联合仿真(运动控制与传感器)
Hello,World
Eight years of testing experience, why was the leader criticized: the test documents you wrote are not as good as those of fresh graduates
jsArray array copy method performance test 2207300823
Study Notes - Becoming a Data Analyst in Seven Weeks "Week 2: Business": Business Analysis Metrics
ARC117E Zero-Sum Ranges 2
VLAN实验
The path to uniting the programmer: "titles bucket" to the highest state of pragmatic