我创建了一个 python UDF 来将日期时间转换为不同的时区。该脚本使用不随 python(或 jython)一起提供的 pytz。我尝试了几件事:
- 引导 PIG 安装它自己的 jython 并在该 jython 安装中包含 pytz。我无法让 PIG 使用新安装的 jython,它不断恢复为 Amazon 的 jython。
- 将 PYTHONPATH 设置为安装新模块的本地目录
- 将 HADOOP_CLASSPATH/PIG_CLASSPATH 设置为新安装的 jython
当我尝试加载 UDF 脚本时,每一个都以“ImportError:没有名为 pytz 的模块”结尾。如果我删除 pytz 脚本加载正常,所以它肯定是给它带来问题的外部模块。
编辑:最初将此作为评论,但我想我只是对其进行编辑:
我已经尝试了所有我知道的方法来让 PIG 识别另一个 jython jar。那没有奏效。亚马逊的 jython 在这里:/home/hadoop/.versions/pig-0.9.2/lib/pig/jython.jar,正在识别这个 sys.path:/home/hadoop/lib/Lib。我不知道如何针对这个 jar 构建外部库。