Apache spark 如何执行来自对Spark中的表具有不同访问权限的web用户的查询?

Apache spark 如何执行来自对Spark中的表具有不同访问权限的web用户的查询?,apache-spark,pyspark,Apache Spark,Pyspark,我在一台独立的机器上运行single spark上下文。我可以在独立模式或纱线模式下运行多个spark上下文吗 我在网上搜索过,但还没有找到具体的答案。我遇到过单火花应用程序的作业调度。但如果我想同时运行两个不同的spark作业,该怎么办?这就是为什么我需要了解是否有可能一次运行多个spark上下文。更准确地说,我当前的用例是 一个spark应用程序和两个spark上下文 我正在使用PySpark 2.1.0 我认为更多的是关于如何管理用户权限,而与Spark的关系不大 提示:您也可以使用每个用

我在一台独立的机器上运行single spark上下文。我可以在独立模式或纱线模式下运行多个spark上下文吗

我在网上搜索过,但还没有找到具体的答案。我遇到过单火花应用程序的作业调度。但如果我想同时运行两个不同的spark作业,该怎么办?这就是为什么我需要了解是否有可能一次运行多个spark上下文。更准确地说,我当前的用例是

一个spark应用程序和两个spark上下文


我正在使用PySpark 2.1.0

我认为更多的是关于如何管理用户权限,而与Spark的关系不大

提示:您也可以使用每个用户的数据库模式来快速区分公共表和私有表

让我们设想一种情况,您希望为两个用户服务:userA和userB

  • userA想要查看公共表
    publicTable

    spark.read.table("publicTable")
    
    完成了

  • 另一个用户userB想要查看他自己的私有表
    privateTable

    spark.read.table("privateTable")
    
    完成了

  • 正如您可能已经注意到的,代码中没有变化。考虑到我对web应用程序的思考,决定何时以及如何访问表,这是故意的。这并不是Spark所关心的(有些人可能会说Spark中的安全性很低,这是因为它与Spark提供的功能是正交的)

    您还可以探索提供了
    spark submit
    接口的应用程序,您可以在其中定义
    --代理用户

    --proxy-user NAME         User to impersonate when submitting the application.
                              This argument does not work with --principal / --keytab.
    

    您可以探索Kerberos,它在某种程度上提供了支持,可以为您提供更复杂的安全性。因为您使用Hadoop Thread作为Spark应用程序的集群管理器,所以这可能是解决方案



    请阅读官方文档中的主题。

    既然您的应用程序彼此独立,为什么不将它们作为两个不同的spark应用程序运行?谢谢您的回复,但如果数据源不同,但用户是通用的,该怎么办?我的意思是,作为一个用户,我希望看到两个数据集,其中一些资源是通用的,但不是您想要的全部“一次运行两个不同的spark作业”或“一次运行多个spark上下文”"? 在一个Spark应用程序中不能有多个SparkContext,因此我的问题是。你真正想做什么?谢谢,@JacekLaskowski的回复。你的网站帮助我学习。目前,我想一次运行多个spark上下文。但是你提到我不能在一个spark应用程序中运行多个SparkContext。所以,请您建议我如何解决给定的情况“如果我想向一个普通用户显示两个不同的数据集/表,其中一些数据集资源是通用的,但不是全部,请考虑一个spark web应用程序,其中一个用户登录,他希望看到两个数据视图稳定”。还请向我解释是否可能“同时运行两个不同的spark作业”