天天看點

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

本文作者:吳強(PingCAP TiDB Cloud 團隊工程師)

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 叢集的 Username 和 Password。

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 叢集: 

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

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("*"))      
如何在 TiDB Cloud 上使用 Databricks 進行資料分析 | TiDB Cloud 使用指南

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

  1. 在 Databricks 工作區,單擊 Create > Import,并粘貼 TiDB Cloud 樣例 URL,将筆記本下載下傳到您的 Databricks 工作區。
  2. 将該筆記本關聯到您的 Spark 叢集。
  3. 使用您自己的 TiDB Cloud 叢集資訊替換樣例中的 JDBC 配置。
  4. 按照筆記本中的步驟,通過 Databricks 使用 TiDB Cloud。

總結

繼續閱讀