簡體   English   中英

如何從 Azure Databricks 訪問本地 Teradata

[英]How to access on premise Teradata from Azure Databricks

我們需要從 Azure Databricks 連接到本地 Teradata。

這可能嗎?

如果是,請告訴我如何。

我也在尋找這些信息,最近我能夠從 Databricks 訪問我們的 Teradata 實例。 這是我能夠做到的。

第 1 步。檢查您的雲連接。
%sh nc -vz 'jdbcHostname' 'jdbcPort'
- 'jdbcHostName' 是您的 Teradata 服務器。
- 'jdbcPort' 是您的 Teradata 服務器偵聽端口。 默認情況下,Teradata 偵聽 TCP 端口 1025

另請查看Databrick 關於連接到另一個基礎設施的最佳實踐

步驟 2. 安裝 Teradata JDBC 驅動程序。
Teradata 下載頁面按版本和存檔類型提供 JDBC 個驅動程序。 您還可以查看Teradata JDBC Driver Supported Platforms頁面以確保您選擇了正確版本的驅動程序。

Databricks 提供了多種方式來安裝 JDBC 庫 JAR 用於 Databricks 中沒有驅動程序的數據庫。 請參閱Databricks 庫以了解更多信息並選擇適合您的庫。 安裝后,您應該會在“庫”選項卡下的“集群詳細信息”頁面中看到它。

Terajdbc4.jar dbfs:/workspace/libs/terajdbc4.jar

第 3 步。從 Databricks 連接到 Teradata。
您可以定義一些變量,讓我們以編程方式創建這些連接。 由於我的實例需要 LDAP,我在 URL 中添加了 LOGMECH=LDAP。如果沒有 LOGMECH=LDAP,它會返回“用戶名或密碼無效”錯誤消息。
(將斜體文本替換為您環境中的值) driver = “com.teradata.jdbc.TeraDriver”
url = “jdbc:teradata://Teradata_database_server/Database=Teradata_database_name,LOGMECH=LDAP”
表 = “Teradata_schema.Teradata.tablename_or_viewname”
user = “你的用戶名”
密碼 = “你的密碼”

現在指定了連接變量,您可以創建一個 DataFrame。您還可以將其顯式設置為特定模式(如果已有模式)。 更多信息請參考Spark SQL 指南

現在,讓我們在 Python 中創建一個 DataFrame。

My_remote_table = spark.read.format(“jdbc”)\
.option(“driver”, driver)\
.option(“url”, url)\
.option(“dbtable”, table)\
.option(“user”, user)\
.option(“password”, password)\
.load()

現在創建了DataFrame,可以查詢了。 例如,您可以將某些特定列 select 轉換為 select 並在 Databricks 中顯示。

display(My_remote_table.select(“EXAMPLE_COLUMN”))

步驟 4. 創建臨時視圖或永久表。

My_remote_table.createOrReplaceTempView(“YOUR_TEMP_VIEW_NAME”)
or
My_remote_table.write.format(“parquet”).saveAsTable(“MY_PERMANENT_TABLE_NAME”)

如果打算簡單地從 Teradata 在 Databricks 中創建一個表,則也可以合並步驟 3 和 4。 查看 Databricks 文檔 SQL Databases Using JDBC 了解其他選項。

這是我發表的有關該主題的文章的鏈接。
從 Databricks 訪問 Teradata 以在數據科學和分析項目中進行快速實驗

如果您創建了一個可以連接到本地的虛擬網絡,那么您可以將您的 databricks 實例部署到該 vnet 中。 請參閱https://docs.azuredatabricks.net/administration-guide/cloud-configurations/azure/vnet-inject.html

我假設 terradata 有一個火花連接器。 我自己沒有使用過,但我確定存在一個。

你不能。 如果你運行Azure Databricks,所有的數據都需要存儲在Azure中。但是你可以使用REST API從Teradata中調用數據,然后將數據保存在Azure中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM