如何从 Azure Databricks 访问本地 Teradata

How to access on premise Teradata from Azure Databricks

我们需要从 Azure Databricks 连接到本地 Teradata。

这可能吗?

如果是,请告诉我怎么做。

如果您创建了一个可以连接到本地的虚拟网络,那么您可以将您的数据块实例部署到该 vnet 中。参见 https://docs.azuredatabricks.net/administration-guide/cloud-configurations/azure/vnet-inject.html

我假设有一个用于 terradata 的 spark 连接器。我自己没有使用过它,但我确定存在一个。

我也在寻找这些信息,最近我能够从 Databricks 访问我们的 Teradata 实例。这是我能够做到的。

第 1 步。检查您的云连接。
%sh nc -vz 'jdbcHostname' 'jdbcPort'
- 'jdbcHostName' 是您的 Teradata 服务器。
- 'jdbcPort' 是您的 Teradata 服务器侦听端口。默认情况下,Teradata 侦听 TCP 端口 1025

另请查看 Databrick’s best practice 连接到另一个基础设施。

步骤 2. 安装 Teradata JDBC driver.
Teradata Downloads page provides JDBC drivers by version and archive type. You can also check the Teradata JDBC Driver Supported Platforms 页面以确保您选择正确的 driver 版本。

Databricks 提供了多种方法来为 Databricks 中 drivers 不可用的数据库安装 JDBC 库 JAR。请参阅 Databricks Libraries 以了解更多信息并选择适合您的。 安装后,您应该会在“库”选项卡下的“集群详细信息”页面中看到它。

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

第 3 步。从 Databricks 连接到 Teradata。
您可以定义一些变量,让我们以编程方式创建这些连接。由于我的实例需要 LDAP,因此我在 URL 中添加了 LOGMECH=LDAP。如果没有 LOGMECH=LDAP,它会显示 returns“用户名或密码无效”错误消息。
(将斜体文本替换为您环境中的值) driver = “com.teradata.jdbc.TeraDriver”
url = “jdbc:teradata://Teradata_database_server/Database=Teradata_database_name,LOGMECH=LDAP”
table = “Teradata_schema.Teradata_tablename_or_viewname”
用户 = “your_username”
密码 = “your_password”

现在指定了连接变量,您可以创建一个DataFrame。如果您已经有一个模式,您也可以明确地将其设置为一个特定的模式。详情请参考Spark SQL Guide

现在,让我们在 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 步。创建临时视图或永久视图table。

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

如果打算在 Teradata 的 Databricks 中简单地创建 table,则也可以将步骤 3 和步骤 4 合并。查看 Databricks 文档 SQL 使用 JDBC 的数据库了解其他选项。

这里是 link 我发表的关于这个主题的 write-up。
Accessing Teradata from Databricks for Rapid Experimentation in Data Science and Analytics Projects

你不能。如果你 运行 Azure Databricks,所有的数据都需要存储在 Azure 中。但是您可以使用 REST API 从 Teradata 调用数据,然后将数据保存在 Azure 中。