【问题标题】:Create custom writable key/value type in python for Hadoop Map Reduce?在 python 中为 Hadoop Map Reduce 创建自定义可写键/值类型?
【发布时间】:2018-08-01 23:23:19
【问题描述】:

我在 Hadoop MR 上工作了很长时间,我创建并使用了自定义(扩展)Writable 类,包括MapWritable。现在我需要将我用 Java 编写的同一个 MR 翻译成 Python。我没有 python 经验,现在正在探索各种库。我正在研究一些选项,例如 PydoopMrjob。但是,我想知道这些库是否包含创建类似自定义 Writable 类的选项以及如何创建它们。如果不是,有哪些可能的替代方案可以做到这一点?

【问题讨论】:

    标签: python hadoop mapreduce


    【解决方案1】:

    在 Pydoop 中,对自定义 Hadoop 类型的显式支持仍然是 WIP。换句话说,现在我们并没有让用户的事情变得简单,但可以通过一些工作来完成。几点建议:

    • Pydoop 已经包含自定义 Java 代码,与 Python 包一起自动安装为 pydoop.jar。我们根据需要将这个额外的 jar 传递给 Hadoop。添加更多 Java 代码只需将源代码放在 src/ 中并将其列在 JavaLib.java_files 中的 setup.py

    • 在 Python 方面,您需要新类型的反序列化程序。例如,请参阅 pydoop.mapreduce.pipes 中的 LongWritableDeserializer

    希望这会有所帮助。

    【讨论】:

    • 另外,我在通过克隆 pydoop 的开发分支为 python 3.6 构建库时发现了一个问题。未设置 JAVA_HOME。我以 root 用户身份运行构建。我在 .bash_profile 中设置了 JAVA_HOME 和 HADOOP_HOME 的值。我正在使用 Hortonworks 2.6.5。 hadoop_env.sh 还正确设置了 JAVA_HOME 值。但是我仍然不断收到这个问题。我还有什么需要做的吗?
    • @KNP 这是如此,而不是 Pydoop 帮助页面。如果您认为您在安装过程中发现了问题,请在github.com/crs4/pydoop/issues开票
    • 更正。这是我这边的一个错误。我在 bashrc 文件中有错误的导出语句。错过了导出关键字。真傻我。更正它并且它有效。
    猜你喜欢
    • 2023-04-10
    • 2013-11-11
    • 2014-04-14
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2014-03-19
    相关资源
    最近更新 更多