{
    "componentChunkName": "component---src-templates-blog-blog-detail-tsx",
    "path": "/blog/analytics-on-tidb-cloud-with-databricks",
    "result": {"pageContext":{"blog":{"id":"Blogs_409","title":"如何在 TiDB Cloud 上使用 Databricks 进行数据分析 | TiDB Cloud 使用指南","tags":["TiDB Cloud"],"category":{"name":"产品技术解读"},"summary":"本文主要介绍如何创建 TiDB Cloud Developer Tier 集群、如何将 TiDB 对接到 Databricks，以及如何使用 Databricks 处理 TiDB 中的数据。","body":"> 吴强（PingCAP TiDB Cloud 团队工程师）\n\n**TiDB Cloud** 是为开源分布式数据库 TiDB 打造的全托管 DBaaS (Database-as-a-Service) 服务。\n\n**Databricks** 是一款搭载 Spark，并基于网页的数据分析平台。Databricks 的数据湖仓架构集成了业界最优秀的数据仓库和数据湖。\n\n借助 Databricks 内置的 JDBC 驱动程序，只需几分钟即可将 TiDB Cloud 对接到 Databricks，随后可以通过 Databricks 分析 TiDB 中的数据。**本文主要介绍如何创建 TiDB Cloud Developer Tier 集群、如何将 TiDB 对接到 Databricks，以及如何使用 Databricks 处理 TiDB 中的数据**。\n\n## 设置 TiDB Cloud Dev Tier 集群\n\n使用 TiDB Cloud 前，需进行以下操作：\n\n1. 注册 [TiDB Cloud 账号](https://tidbcloud.com/free-trial?utm_source=website-zh&utm_medium=referral&utm_campaign=blog-analytics-on-tidb-cloud-with-databricks)并登录。   \n2. 在 **Create Cluster** > **Developer Tier** 菜单下，选择 **1 year Free Trial**。 \n3. 设置集群名称，并为集群选择区域。\n4. 单击 **Create**。大约 1~3 分钟后，TiDB Cloud 集群创建成功。\n5. 在 **Overview** 面板，单击 **Connect** 并创建流量过滤器。例如，添加 IP 地址 0.0.0.0/0，允许所有 IP 访问。\n\nJDBC URL 稍后将在 Databricks 中使用，请做好记录。\n\n## 将样例数据导入 TiDB Cloud\n\n创建集群后，即可导入样例数据到 TiDB Cloud。我们将使用共享单车平台 Capital Bikeshare 的系统样例数据集作为演示。样例数据的使用完全遵循 Capital Bikeshare 公司的数据许可协议。\n\n1.在集群信息窗格，单击 **Import**。随后，将出现 **Data Import Task** 页面。  \n2.按如下所示配置导入任务：\n\n  - Data Source Type : `Amazon S3`\n\n  - Bucket URL : `s3://tidbcloud-samples/data-ingestion/`\n\n  - Data Format : `TiDB Dumpling`\n\n  - Role-ARN : `arn:aws:iam::385595570414:role/import-sample-access`\n\n3.配置 **Target Database** 时，键入 TiDB 集群的 **Username** 和 **Password**。\n\n4.单击 **Import**，开始导入样例数据。整个过程将持续大约 3 分钟。\n\n5.返回概览面板，单击 **Connect to Get the MyCLI URL**。\n\n6.使用 MyCLI 客户端检查样例数据是否导入成功： \n\n```\n$ mycli -u root -h tidb.xxxxxx.aws.tidbcloud.com -P 4000\n\n(none)> SELECT COUNT(*) FROM bikeshare.trips; \n+----------+\n| COUNT(*) |\n+----------+\n| 816090   |\n+----------+\n1 row in set\nTime: 0.786s\n```\n\n## 使用 Databricks 连接 TiDB Cloud\n\n开始之前，请确保您已经使用自己的账号登录到 Databricks 工作区。如果您没有 Databricks 账号，请先免费注册一个。如果您拥有丰富的 Databricks 使用经验，并且想直接导入笔记本，可跳过（可选）将 TiDB Cloud 样例笔记本导入 Databricks。\n\n在本章节中，我们将创建一个新的 Databricks Notebook，并将它关联到一个 Spark 集群，随后通过 JDBC URL 将创建的笔记本连接到 TiDB Cloud。\n\n1.在 Databricks 工作区，按如下所示方式创建并关联 Spark 集群：\n![Create Notebook.png](https://img1.www.pingcap.com/prod/Create_Notebook_f4cb313f95.png)\n\n2.在 Databricks 笔记本中配置 JDBC。TiDB 可以使用 Databricks 默认的 JDBC 驱动程序，因此无需配置驱动程序参数：\n  ```\n%scala\nval url = \"jdbc:mysql://tidb.xxxx.prod.aws.tidbcloud.com:4000\"\nval table = \"bikeshare.trips\"\nval user = \"root\"\nval password = \"xxxxxxxxxx\"\n  ```\n\n  配置参数说明如下：\n\n  - url：用于连接 TiDB Cloud 的 JDBC URL\n\n  - table：指定数据表，例如：${database}.${table}\n\n  - user：用于连接 TiDB Cloud 的 用户名\n\n  - password：用户的密码\n\n3.检查 TiDB Cloud 的连通性： \n```\n%scala\nimport java.sql.DriverManager\nval connection = DriverManager.getConnection(url, user, password)\nconnection.isClosed()\nres2: Boolean = false\n```\n\n## 在 Databricks 中分析数据\n\n只要成功建立连接，即可将 TiDB 数据加载为 Spark DataFrame，并在 Databricks 中分析这些数据。\n\n1.创建一个 Spark DataFrame 用于加载 TiDB 数据。这里，我们将引用在之前步骤中定义的变量：\n\n```\n%scala\nval remote_table = spark.read.format(\"jdbc\")\n.option(\"url\", url)\n.option(\"dbtable\", table)\n.option(\"user\", user)\n.option(\"password\", password)\n.load()\n```\n\n2.查询数据。Databricks 提供强大的图表显示功能，您可以自定义图表类型：\n```\n%scala\ndisplay(remote_table.select(\"*\"))\n```\n![查询数据.png](https://img1.www.pingcap.com/prod/_62a1e3fef9.png)\n\n3.创建一个 DataFrame 视图或一张 DataFrame 表。我们创建一个名为 “trips” 的视图作为示例：\n```\n%scala\nremote_table.createOrReplaceTempView(\"trips\")\n```\n\n4.使用 SQL 语句查询数据。以下语句将查询每种类型单车的数量： \n```\n%sql\nSELECT rideable_type, COUNT(*) count FROM trips GROUP BY rideable_type ORDER BY count DESC\n```\n5.将分析结果写入 TiDB Cloud： \n```\n%scala\nspark.table(\"type_count\")\n.withColumnRenamed(\"type\", \"count\")\n.write\n.format(\"jdbc\")\n.option(\"url\", url)\n.option(\"dbtable\", \"bikeshare.type_count\")\n.option(\"user\", user)\n.option(\"password\", password)\n.option(\"isolationLevel\", \"NONE\")\n.mode(SaveMode.Append)\n.save()\n```\n\n## 将 TiDB Cloud 样例笔记本导入 Databricks\n\n我们使用的 TiDB Cloud 样例笔记本包含使用 Databricks 连接 TiDB Cloud 和在 Databricks 中分析 TiDB 数据两个步骤。您可以直接导入该样例笔记本，以便聚焦于分析过程。\n\n1. 在 Databricks 工作区，单击 Create > Import，并粘贴 TiDB Cloud 样例 URL，将笔记本下载到您的 Databricks 工作区。\n\n2. 将该笔记本关联到您的 Spark 集群。\n\n3. 使用您自己的 TiDB Cloud 集群信息替换样例中的 JDBC 配置。\n\n4. 按照笔记本中的步骤，通过 Databricks 使用 TiDB Cloud。\n\n## 总结\n本文主要介绍了如何通过 Databricks 使用 TiDB Cloud。您可以立即[免费试用 TiDB Cloud](https://tidbcloud.com/free-trial?utm_source=website-zh&utm_medium=referral&utm_campaign=blog-analytics-on-tidb-cloud-with-databricks)，仅需几分钟即可部署你的 TiDB 集群。也可以根据企业的业务场景申请 [TiDB Cloud PoC](https://en.pingcap.com/apply-for-poc)，获得专业的 PoC 技术支持。\n\n同时，我们正在编写另一个教程，用来介绍如何通过 TiSpark（TiDB/TiKV 上层用于运行 Apache Spark 的轻量查询层，项目链接：<https://github.com/pingcap/tispark>）在 TiDB 上使用 Databricks 进行数据分析，敬请期待。","date":"2022-07-27","author":"吴强","fillInMethod":"writeDirectly","customUrl":"analytics-on-tidb-cloud-with-databricks","file":null,"relatedBlogs":[]}}},
    "staticQueryHashes": ["1327623483","1820662718","3081853212","3430003955","3649515864","4265596160","63159454"]}