0

我想使用 jdbc 从 spark notebook 连接到在 BigInsights 上运行的配置单元服务。jdbc url 格式为:

jdbc:hive2://${env.hostname}:10000/default;ssl=true;sslTrustStore=./truststore.jks;trustStorePassword=mypassword;

从 url 可以看出,此连接需要信任库。我应该如何使信任库可用于作为服务触发?

更新1:

  • 该证书不是由知名 CA 颁发的。
  • 租户无权访问服务上的 JRE/JDK。

更新 2:

我可以使用以下命令添加证书和信任库:

with open('certificate', 'w') as f:
    f.write('''
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
''')

!keytool -import -trustcacerts -alias biginsights -file certificate -keystore truststore.jks -storepass mypassword -noprompt

现在问题的最后一部分是如何在 bluemix spark 上的 python notebook 中添加一个 jar?

4

2 回答 2

1

这是一种可能很奇怪的方法(未尝试):-

在 Notebook 中,如果您还没有在 python shell 中,则切换到 python shell,然后如果您可以从 URL 下载您的信任库,您可以通过这种方式下载它并运行 cell:- !wget

如果 biginsights 服务器允许您使用 SSH 访问密钥库,请使用 !scp 下载信任库。

下载后,我建议尝试使用 !pwd 这将为您提供路径 /gpfs/fs01/user/s027-20bcfe6e4297e8-2c631c8ff999/notebook/notebooks

如果你这样做了!ls,你可以看到你下载的信任文件。 看看你是否可以在 JDBC URL 中给出 trustore 的完整绝对路径。

谢谢,查尔斯。

于 2016-05-09T17:18:20.633 回答
0

首先查明 SSL 证书是否由“知名”CA 机构颁发。“众所周知”是指那些签名证书已包含在 jdk 信任库中的 CA 机构。如果是,请从 jdk 文档中找出信任库的位置和名称,并在 sslTrustStore 参数中提供。如果不是,则必须下载证书,添加到信任库并将信任库上传到 spark 作为服务可访问的位置。

于 2016-05-09T15:54:08.487 回答