通过jdbc驱动程序触发雪花连接

cetgtptt  于 2021-05-26  发布在  Spark
关注(0)|答案(0)|浏览(355)

我试图通过jdbc驱动程序从snowflake创建spark数据集。在下面的代码中,getprivatekey方法通过bouncy castle provider解析pem并返回java.security.privatekey对象。当我通过drivermanager连接时,此代码工作正常。

DriverManager.getConnection(url, prop)

但当我试图通过sparksession连接时。我得到的错误是sun.security.rsa.rsaprivatecrtkeyimpl不能转换为java.lang.string如果我传递privatekey string,那么得到的错误是jdbc需要privatekey对象而不是string。
如果我传递的是私钥文件和私钥文件而不是私钥,那么我得到的是空指针异常。

Properties connectionProperties = new Properties();
connectionProperties.put("user", "<user>");
connectionProperties.put("db", "<DB>");
connectionProperties.put("schema", "<schema>");
connectionProperties.put("warehouse", "<warehouse>");
connectionProperties.put("privateKey", getPrivateKey("<p8File>","<passpharse>"));
//connectionProperties.put("private_key_file", "<p8File>");
//connectionProperties.put("private_key_file_pwd", "<passpharse>");
connectionProperties.put("useSSL", "true");

String driverName="com.snowflake.client.jdbc.SnowflakeDriver";

resultDataset =  sparkSession.sqlContext().read()
                .format("jdbc")
                .option("dbtable", "store")
                .option("driver", driverName)
                .jdbc("jdbc:snowflake://<AccountWithRegion>.snowflakecomputing.com", "store", connectionProperties);

请帮我在spark jdbc驱动程序中传递私钥好吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题