假设您在Amazon EMR上运行的spark群集需要访问postgresql数据库。给它登录和密码的最佳方法是什么? 这些是我们尝试过的一些方法:
我错过了更好的方法吗?
答案 0 :(得分:1)
您可以使用EC2实例元数据将秘密推送到每个ec2实例,使用GET调用来检索它。理想情况下,创建一个仅对EMR群集的生命周期有效的登录名/密码,在其被拆除后将其删除(或至少重置密码)。
AFAIK在Spark中没有对此明确支持,但如果您在类路径上获得AWS SDK,则可以使用EC2MetadataUtils来使用它
答案 1 :(得分:0)
作为环境变量将其作为EMR设置中spark-env的一部分传递 (由于执行程序无法访问环境,因此无法正常工作 变量。
如果能够在驱动程序中提取变量,则可以通过将其设置为广播变量,将其“传输”给执行程序。如果要在每个执行程序中设置某种DB客户端,则只要广播该值,他们就可以访问该值。
https://blog.knoldus.com/broadcast-variables-in-spark-how-and-when-to-use-them/
答案 2 :(得分:0)
首先,您使用KMS加密密码。然后,您有许多选择将加密的值传递给驱动程序或工作程序。在驱动程序和工作程序内部,您可以使用KMS解密密码。
要传递加密值,您可以