【问题标题】:Can I set pig.temp.dir to /user/USERNAME/tmp/pig?我可以将 pig.temp.dir 设置为 /user/USERNAME/tmp/pig 吗?
【发布时间】:2013-12-03 19:00:09
【问题描述】:

Hive 可以配置

hive.exec.scratchdir=/user/${user.name}/tmp/hive

我可以用 Pig 做类似的事情吗?我已经尝试修改 pig.properties 文件,但似乎没有任何效果。

pig.temp.dir=/user/${user.name}/tmp/pig <- Doesn't work
pig.temp.dir=/user/`whoami`/tmp/pig     <- Doesn't work
pig.temp.dir=/user/${user}/tmp/pig      <- Doesn't work
pig.temp.dir=/user/${username}/tmp/pig  <- Doesn't work

我可以用别名替换 pig 命令,但我希望将更改写入配置文件。

pig -Dpig.temp.dir=/user/`whoami`/tmp/pig

谢谢!

更新:我们决定将 /tmp/ 用于生产系统。这根本是一个问题的原因是因为我们正在运行 MapR,它似乎试图将临时目录放入用户目录,并且在 Hive 中成功,但在 Pig 中没有成功。

【问题讨论】:

    标签: hadoop configuration permissions apache-pig configuration-files


    【解决方案1】:

    您还可以在 Pig 脚本中设置 pig 临时目录,如下所示: set pig.temp.dir /user/foo/tmp/pig; 对于小输出,我认为使用 /tmp 目录很好,但对于大输出,我建议用户写入他们的个人目录。

    【讨论】:

      【解决方案2】:

      不是配置文件解决方案,但您可以将其烘焙到 $PIG_HOME/bin/pig 脚本中:

      PIG_OPTS="$PIG_OPTS -Dpig.temp.dir=/user/`whoami`/tmp/pig"
      

      【讨论】:

      • 这肯定行得通,但很难在生产系统上维护。
      • 维护在什么意义上?这只需要存在于客户端机器上,因此无论您必须交付自定义 pig.properties 的任何过程,您肯定都可以以相同的方式交付修改后的 pig 脚本吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 2014-01-02
      • 2015-11-03
      • 2015-03-08
      • 2018-03-22
      • 1970-01-01
      相关资源
      最近更新 更多