如何在 TiDB Cloud 上使用 Databricks 進行資料分析 | TiDB Cloud 使用指南

語言: CN / TW / HK

作者丨吳強(PingCAP TiDB Cloud 團隊工程師)

編輯丨Calvin Weng、Tom Dewan

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 前,需進行以下操作:

  1. 註冊 TiDB Cloud 賬號並登入。

  2. Create Cluster > Developer Tier 選單下,選擇 1 year Free Trial

  3. 設定叢集名稱,併為叢集選擇區域。

  4. 單擊 Create 。大約 1~3 分鐘後,TiDB Cloud 叢集建立成功。

  5. Overview 面板,單擊 Connect 並建立流量過濾器。例如,新增 IP 地址 0.0.0.0/0,允許所有 IP 訪問。

JDBC URL 稍後將在 Databricks 中使用,請做好記錄。

將樣例資料匯入 TiDB Cloud

建立集群后,即可匯入樣例資料到 TiDB Cloud。我們將使用共享單車平臺 Capital Bikeshare 的系統樣例資料集作為演示。樣例資料的使用完全遵循 Capital Bikeshare 公司的資料許可協議。

1. 在叢集資訊窗格,單擊 Import 。隨後,將出現 Data Import Task 頁面。

2. 按如下所示配置匯入任務:

  • Data Source Type : Amazon S3

  • Bucket URL : s3://tidbcloud-samples/data-ingestion/

  • Data Format : TiDB Dumpling

  • Role-ARN : arn:aws:iam::385595570414:role/import-sample-access

3. 配置 Target Database 時,鍵入 TiDB 叢集的 UsernamePassword

4. 單擊 Import ,開始匯入樣例資料。整個過程將持續大約 3 分鐘。

5. 返回概覽面板,單擊 Connect to Get the  MyCLI URL

6. 使用 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。

1. 在 Databricks 工作區,按如下所示方式建立並關聯 Spark 叢集:

2. 在 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:指定資料表,例如:${database}.${table}

  • user:用於連線 TiDB Cloud 的 使用者名稱

  • password:使用者的密碼

3. 檢查 TiDB Cloud 的連通性:

%scala
import java.sql.DriverManager
val connection = DriverManager.getConnection(url, user, password)
connection.isClosed()
res2: Boolean = false

在 Databricks 中分析資料

只要成功建立連線,即可將 TiDB 資料載入為 Spark DataFrame,並在 Databricks 中分析這些資料。

1. 建立一個 Spark DataFrame 用於載入 TiDB 資料。這裡,我們將引用在之前步驟中定義的變數:

%scala
val remote_table = spark.read.format("jdbc")
.option("url", url)
.option("dbtable", table)
.option("user", user)
.option("password", password)
.load()

2. 查詢資料。Databricks 提供強大的圖表顯示功能,您可以自定義圖表型別:

%scala
display(remote_table.select("*"))

3. 建立一個 DataFrame 檢視或一張 DataFrame 表。我們建立一個名為 “trips” 的檢視作為示例:

%scala
remote_table.createOrReplaceTempView("trips")

4. 使用 SQL 語句查詢資料。以下語句將查詢每種型別單車的數量:

%sql
SELECT rideable_type, COUNT(*) count FROM trips GROUP BY rideable_type ORDER BY count DESC

5. 將分析結果寫入 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 資料兩個步驟。您可以直接匯入該樣例筆記本,以便聚焦於分析過程。

  1. 在 Databricks 工作區,單擊 Create > Import ,並貼上 TiDB Cloud 樣例 URL,將筆記本下載到您的 Databricks 工作區。

  2. 將該筆記本關聯到您的 Spark 叢集。

  3. 使用您自己的 TiDB Cloud 叢集資訊替換樣例中的 JDBC 配置。

  4. 按照筆記本中的步驟,通過 Databricks 使用 TiDB Cloud。

總結

本文主要介紹瞭如何通過 Databricks 使用 TiDB Cloud。您可以點選文末【閱讀原文】試用 TiDB Cloud,僅需幾分鐘即可部署你的 TiDB 叢集。

同時,我們正在編寫另一個教程,用來介紹如何通過 TiSpark( TiDB/TiK V 上層用 於執行 Apache Spark 的輕量查詢層,專案連結: https://github.com/pingcap/tispark )在 TiDB 上使用 Databricks 進行資料分析,敬請期待。

原文連結:https://en.pingcap.com/blog/analytics-on-tidb-cloud-with-databricks/(複製連結至瀏覽器即可檢視)

:bulb: 點選文末 【閱讀原文】 ,立即免費試用 TiDB Cloud!