gpt4 book ai didi

用于 hive/hadoop 流的 Python 打包

转载 作者:行者123 更新时间:2023-12-02 21:40:36 24 4
gpt4 key购买 nike

我有一个用python编写的自定义映射器和reducer的配置单元查询。 mapper 和 reducer 模块依赖于一些未安装在我的集群上的第 3 方模块/包(不能将它们安装在集群上)。我只有在运行 hive 查询时才意识到这个问题,但它却说找不到 xyz 模块。

如何打包整个内容,以便在流式传输作业中拥有所有可用的依赖项(包括传递依赖项)?如何在我的 mapper 和 reducer 中使用这样的打包和导入模块?

这个问题相当幼稚,但即使经过一个小时的谷歌搜索,我也找不到答案。此外,当 mapper/reducer 是用 python 编写时,它不仅特定于 hive,而且通常适用于 hadoop 流作业。

最佳答案

这可以通过将依赖项和 reducer 脚本打包到一个 zip 中来完成,并将这个 zip 作为资源添加到 Hive 中。

假设 Python reducer 脚本依赖于包 D1,而包 D1 又依赖于 D2(从而解决了 OP 对传递依赖项的查询),并且 D1 和 D2 都没有安装在集群中的任何机器上。

  • 将 D1、D2 和 Python reducer 脚本(我们称之为 reducer.py)打包到 dep.zip
  • 像以下示例查询一样使用此 zip:

    添加存档dep.zip;

    FROM (some_table) t1
    插入覆盖表 t2
    减少 t1.col1,t1.col2 使用 'python dep.zip/dep/reducer.py' 作为输出;

  • 注意第一行和最后一行。 Hive 解压缩存档并创建这些目录。 dep 目录将保存脚本和依赖项。

    关于用于 hive/hadoop 流的 Python 打包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29108020/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com