将值从一个笔记本传递到另一个笔记本-Databricks

我正在从databricks连接到Azure SQL Server,为此我正在使用jdbc连接器

val jdbcusername = "user1"
val jdbcPassword = "pwd1"
val jdbcHostname = "XXXXsqldevussc.database.windows.net" 
val jdbcPort = 1111
val jdbcdatabase ="XXXxacttrackdev"

我正在按如下方式创建jdbc网址

import java.util.Properties

val jdbc_url = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database=${jdbcdatabase};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=60;"
val connectionProperties = new Properties()
connectionProperties.put("user",s"${jdbcusername}")
connectionProperties.put("password",s"${jdbcPassword}")  
val cP = connectionProperties

val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionProperties.setProperty("Driver",driverClass)

这一切都在一个普通文件夹中的笔记本中,现在我想将这些值传递到项目文件夹中的笔记本中。使用dbutils.notebook.exit我可以只传递一个值(jdbc_url),但是我还需要将connectionProperties传递给其他笔记本。有人可以帮我吗?我试图在两个单独的dbutils.notebook.exit中传递两个值,但出现错误

dbutils.notebook.exit(jdbc_url) // works well
dbutils.notebook.exit(cP) //throws an error command-2330564045697042:1: error: type mismatch;
                          // found   : java.util.Properties 
                          // required: String
                          // dbutils.notebook.exit(cP)

如何使用dbutils.notebook.exit传递两个值。感谢您的帮助

谢谢!

starguping66896605 回答:将值从一个笔记本传递到另一个笔记本-Databricks

您正尝试使用java.util.Properties返回dbutils.notebook.exit对象。但是,dbutils.notebook.exit仅支持字符串。

因此,您可能需要将Properties对象转换为String。像这样:

    public static String getPropertyAsString(Properties prop) {    
      StringWriter writer = new StringWriter();
      prop.list(new PrintWriter(writer));
      return writer.getBuffer().toString();
    }

    dbutils.notebook.exit(getPropertyAsString(cP))   

您可以将String重新读入其他笔记本的Properties对象中。

本文链接:https://www.f2er.com/3144156.html

大家都在问