【问题标题】:How to access on premise Teradata from Azure Databricks如何从 Azure Databricks 访问本地 Teradata
【发布时间】:2019-02-15 17:41:24
【问题描述】:

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

这可能吗?

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

【问题讨论】:

  • 您是否设法从 Azure Databricks 连接 Teradata?如果可以,请分享步骤..

标签: teradata azure-virtual-network azure-databricks


【解决方案1】:

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

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

还可以查看Databrick’s best practice,了解如何连接到另一个基础架构。

步骤 2. 安装 Teradata JDBC 驱动程序。
Teradata Downloads 页面按版本和存档类型提供 JDBC 驱动程序。您还可以查看Teradata JDBC Driver Supported Platforms 页面以确保选择正确的驱动程序版本。

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

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

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

现在已经指定了连接变量,您可以创建一个 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已经创建好了,可以查询了。例如,您可以选择一些特定的列以在 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 文档使用 JDBC 的 SQL 数据库以了解其他选项。

这是我发表的关于该主题的文章的链接。
Accessing Teradata from Databricks for Rapid Experimentation in Data Science and Analytics Projects

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-10
        • 2021-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-14
        相关资源
        最近更新 更多