Hadoop 从/var和/tmp目录重定向嵌入式配置单元

Hadoop 从/var和/tmp目录重定向嵌入式配置单元,hadoop,apache-spark,hive,Hadoop,Apache Spark,Hive,对于我的单元测试,我在笔记本电脑上运行带有hive上下文的本地spark。启动时,它为其临时文件创建两个目录,一个在/var下,另一个在/tmp下: ... INFO SessionState: Created local directory: /var/folders/h3/... ... INFO SessionState: Created HDFS directory: /tmp/hive/<username>/... 。。。信息会话状态:已创建本地目录:/var/folde

对于我的单元测试,我在笔记本电脑上运行带有hive上下文的本地spark。启动时,它为其临时文件创建两个目录,一个在
/var
下,另一个在
/tmp
下:

... INFO SessionState: Created local directory: /var/folders/h3/...
... INFO SessionState: Created HDFS directory: /tmp/hive/<username>/...
。。。信息会话状态:已创建本地目录:/var/folders/h3/。。。
... 信息会话状态:已创建HDFS目录:/tmp/hive/。。。
这些文件夹是由
org.apache.hadoop.hive.ql.session.SessionState
类创建的

为了避免触发某些本地安全服务,我需要将这些目录重定向到其他文件夹,例如
/Users//safe/


如何覆盖这些默认设置以打开指定路径下的临时文件夹?

在独立配置单元中,
SessionState
具有一些可配置的参数,所有参数都可以从以下位置设置:

SCRATCHDIR(“hive.exec.SCRATCHDIR”,“/tmp/hive”,
“使用全部写入(733)权限创建的配置单元作业的HDFS根暂存目录。”+
对于每个连接的用户,将创建一个HDFS暂存目录:${hive.exec.scratchdir}/+
“使用${hive.scratch.dir.permission}。”),
LOCALSCRATCHDIR(“hive.exec.local.scratchdir”,
“${system:java.io.tmpdir}”+File.separator+“${system:user.name}”,
“用于配置单元作业的本地暂存空间”),
下载的资源目录(“hive.download.RESOURCES.DIR”,
“${system:java.io.tmpdir}”+File.separator+“${hive.session.id}\u资源”,
“用于在远程文件系统中添加资源的临时本地目录。”),
HIVEHISTORYFILELOC(“hive.querylog.location”,
“${system:java.io.tmpdir}”+File.separator+“${system:user.name}”,
“配置单元运行时结构化日志文件的位置”)

我不知道Spark是如何嵌入Hive的,但我确信有一个(链接的是test conf),它控制
Hive.exec.scratchdir
Hive.exec.local.scratchdir
和其他的值。

我认为是
Spark.sql.warehouse.dir
。请看一下参数。您可以使用
SparkSession.config()
@philantrovert-nope进行设置:(
SCRATCHDIR("hive.exec.scratchdir", "/tmp/hive",
    "HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. " +
    "For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, " +
    "with ${hive.scratch.dir.permission}."),

LOCALSCRATCHDIR("hive.exec.local.scratchdir",
    "${system:java.io.tmpdir}" + File.separator + "${system:user.name}",
    "Local scratch space for Hive jobs"),

DOWNLOADED_RESOURCES_DIR("hive.downloaded.resources.dir",
    "${system:java.io.tmpdir}" + File.separator + "${hive.session.id}_resources",
    "Temporary local directory for added resources in the remote file system."),

HIVEHISTORYFILELOC("hive.querylog.location",
    "${system:java.io.tmpdir}" + File.separator + "${system:user.name}",
    "Location of Hive run time structured log file")