gpt4 book ai didi

linux - 如何将 Hive 用户设置为与 Spark 程序中的 Spark 用户不同的用户?

转载 作者:太空宇宙 更新时间:2023-11-04 03:38:27 25 4
gpt4 key购买 nike

我在 Linux、Hive 和 Spark 之间的用户帐户方面遇到了一个非常有趣且棘手的问题...

我们正在使用一个 Spark 应用程序,该应用程序必须能够由多个 (Linux) 用户帐户执行。但是,我们需要“拥有”所有表的共享 Hive 用户,否则一个用户可以创建一个其他用户无法覆盖的表,这意味着除了首先运行代码来删除/创建表的用户之外,我们的代码会中断。

现在,为了手动修改内容,我可以使用 Hive Beeline 中的命令行参数将“Hive 用户”设置为 Linux 用户以外的用户:

/usr/lib/hive/bin/beeline -u jdbc:hive2://<our hive server>:10000 -n <hiveuserid> -d org.apache.hive.jdbc.HiveDriver --hiveconf mapreduce.job.queuename=<queuename>

但是,我知道没有这样的命令行参数来设置 Spark 作业的 Hive ID:

@SPARK_HOME/bin/spark-submit -? <hiveuserid>

这里不能使用 sudo,因为出于安全原因,我们公司为我们提供了一个没有相应 Linux 用户的 Hive 用户,因此我们确实需要将一个 HIVE 用户参数传递给我们的应用程序。

看来spark-submit命令中应该有一些东西(有关spark-submit的命令行参数和参数,请参阅https://spark.apache.org/docs/latest/configuration.html),或者来 self 的Spark scala代码中的东西,例如

import org.apache.spark._
import org.apache.spark.SparkContext._
import org.apache.spark.sql._
import org.apache.spark.sql.hive.HiveContext

sc = new SparkContext(. . .)

hc = new HiveContext(sc)

hc.sql("set user as <hiveuserid>")

或者也许 Hive Context 本身有一些设置用户的功能?

hc.SetUser("<hiveuserid>")

有什么想法吗?在我们可以使用相同的 Hive 用户之前,我们无法以不同的 Linux 用户身份运行此作业

(P.S. 同样,创建一个与共享 Hive 用户匹配的新共享 Linux 用户对我们来说不是一个选择,因为让多人共享 Linux 帐户用户 ID 违反公司安全策略,而且我们不允许共享密码,因此我们的 Linux sudoer 帐户与我们共享 Hive 用户帐户不同 - 不要问我为什么,这是 IT 问题:-)

最佳答案

您是否考虑过为 Hive 数据设置组权限?例如,您的目录可能具有以下权限:

drwxrwxr-x - hive hadoop 0 2014-10-14 04:28/user/hive/warehouse/test

属于 hadoop 组的任何用户都将拥有该表的完整读/写/执行权限。

关于linux - 如何将 Hive 用户设置为与 Spark 程序中的 Spark 用户不同的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30720242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com