我们需要从 Azure Databricks 连接到本地 Teradata。
这有可能吗?
如果是,请告诉我如何。
我们需要从 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 驱动程序支持的平台页面,以确保选择正确的驱动程序版本。
Databricks 提供了多种方法来为 Databricks 中没有驱动程序的数据库安装 JDBC 库 JAR。请参阅Databricks 库以了解更多信息并选择适合您的库。安装后,您应该会在“库”选项卡下的“集群详细信息”页面中看到它。
Terajdbc4.jar dbfs:/workspace/libs/terajdbc4.jar
步骤 3. 从 Databricks 连接到 Teradata。
您可以定义一些变量,让我们以编程方式创建这些连接。由于我的实例需要 LDAP,因此我在 URL 中添加了 LOGMECH=LDAP。如果没有 LOGMECH=LDAP,它会返回“用户名或密码无效”错误消息。
(将斜体文本替换为您环境中的值) driver = “com.teradata.jdbc.TeraDriver”<br /> url = “jdbc:teradata://Teradata_database_server/Database=Teradata_database_name,LOGMECH=LDAP”<br / > 表 = “Teradata_schema.Teradata_tablename_or_viewname”<br /> 用户 = “your_username”<br /> 密码 = “your_password”</p>
现在已经指定了连接变量,您可以创建一个 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 已创建,可以对其进行查询。例如,您可以选择一些特定的列以在 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 数据库以了解其他选项。
这是我在这个主题上发表的文章的链接。
从 Databricks 访问 Teradata 以在数据科学和分析项目中进行快速实验
如果您创建一个可以连接到本地的虚拟网络,那么您可以将您的 databricks 实例部署到该 vnet 中。请参阅https://docs.azuredatabricks.net/administration-guide/cloud-configurations/azure/vnet-inject.html。
我假设 terradata 有一个 spark 连接器。我自己没有使用过它,但我确定存在一个。
你不能。如果运行 Azure Databricks,则所有数据都需要存储在 Azure 中。但是您可以使用 Teradata 中的 REST API 调用数据,然后将数据保存在 Azure 中。