我试图通过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驱动程序中传递私钥好吗?
暂无答案!
目前还没有任何答案,快来回答吧!