python - MRJob 为本地 vs. hadoop 使用不同的 Python 解释器

标签 python hadoop mrjob

我在机器上使用 MRJob A在机器上启动 MapReduce 作业 B_0直通 B_10 .该作业具有依赖项,要求它不使用默认值 /bin/python 运行。 (即 which python 在机器 A 上的输出)但带有 /path/to/weird/python ,存在于 B的但不在 A .

我怎么告诉mrjob使用 /bin/python在本地启 Action 业,但 /path/to/weird/pythonB 上运行它一旦它在 Hadoop 集群中?
--interpreter争论似乎决定了本地和 Hadoop 的解释器。是否有另一种选择来单独指定它们?

或者是否有某种原因使用的解释器必须位于两台机器上的同一路径?

最佳答案

在 Python 文件的顶部添加一个 shebang 行,告诉系统要使用哪个 Python 环境。
使用 env 标签允许本地机器和 Hadoop 集群访问正确的解释器,而无需明确说明位置,例如:
!/usr/bin/env python
或者
!/usr/bin/env python3

关于python - MRJob 为本地 vs. hadoop 使用不同的 Python 解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34598455/

相关文章:

python - 使用 xml.etree.ElementTree 解析 XML 时获取空列表作为属性

python - tensorflow no_grad 概念

python-2.7 - Hadoop 命令在 python3 下失败并在 python 2.7 上工作

hadoop - 在mapreduce期间在HBase表的另一行中查找具有特定列值的行

java - 线程 "main"java.lang.NoClassDefFoundError : when launching pyspark 中的异常

python - 声明 mrjob 映射器而不忽略 key

python - MRjob:reducer 可以执行 2 个操作吗?

python - 用 x 替换字符串中的整数而不进行错误处理

python - 找不到满足我自己模块要求的版本

java - 使用 JDBC 连接到 Hive 2.3.0