在 Glue pythonshell 中使用 pyarrow - ModuleNotFoundError:没有名为“pyarrow.lib”的模块

2024-01-11

创建了一个egg and whlpyarrow 文件并将其放在 s3 上,以便在 pythonshell 作业中调用它。收到这条消息:

职位代码:

import pyarrow
raise

错误,结构相同whl:

Traceback (most recent call last):
  File "/tmp/runscript.py", line 118, in <module>
    runpy.run_path(temp_file_path, run_name='__main__')
  File "/usr/local/lib/python3.6/runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "/usr/local/lib/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/glue-python-scripts-e67xuz2j/genos.py", line 1, in <module>
  File "/glue/lib/installation/kanna-0.1-py3.6.egg/pyarrow/__init__.py", line 49, in <module>
    from pyarrow.lib import cpu_count, set_cpu_count
ModuleNotFoundError: No module named 'pyarrow.lib'

PD:在本地文件中找不到 lib.py 或 lib 文件夹。


我也遇到了同样的问题AWS Lambda并遇到了这个问题。

For Glue, AWS docs https://docs.aws.amazon.com/glue/latest/dg/console-custom-created.html?icmpid=docs_glue_studio_helppanel state only pure python libraries can be used.AWS Glue docs sreenshot

对于拉姆达:

根本问题是像 pyarrow 这样的模块从 C/C++ 移植代码。当你检查pyarrow代码库时,你会发现实际上存在两个pyarrow.lib文件,但它们的文件扩展名为.pyx和.pxd。这不是纯 Python 代码,因此取决于底层 CPU 架构。

我必须手动下载 pyarrow 及其依赖项 numpy 所需版本的 .whl 文件。从http://pypi.org/project/pyarrow/,单击下载文件并搜索您的匹配版本。 cp39 表示 cpython 3.9。 x86代表CPU架构。对 Numpy 执行相同的步骤。我最终下载了这些文件:pyarrow-8.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl and numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

然后,您必须解压缩它们并创建一个存档,将它们放在一个名为 Python 的文件夹中。该文件夹可用于在 Lambda 中创建层。将此层附加到您的项目并导入 pyarrow 应该可以工作。

另一种解决方案是使用自定义 Docker 镜像。这对我也有用。我相信AWS docs https://docs.aws.amazon.com/lambda/latest/dg/images-create.html对该主题进行了详尽的阐述。我已经写了一个 PoC 以及我遵循的所有步骤here https://github.com/swakeert/aws_lambda_docker_container.

我跟着本指南 https://medium.com/@shimo164/lambda-layer-to-use-numpy-and-pandas-in-aws-lambda-function-8a0e040faa18用于创建 pyarrow 图层。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Glue pythonshell 中使用 pyarrow - ModuleNotFoundError:没有名为“pyarrow.lib”的模块 的相关文章

随机推荐

  • Android 成功分享意图

    如何判断用户是否成功完成了共享意图 例如 如果用户想通过 Facebook 或 Twitter 分享应用程序 Edit 我不是在研究如何创建Intent共享的 我想知道用户是否确实分享了任何内容 或者用户是否按下了取消按钮 我认为没有一种可
  • 在 Recyclerview 或 Listview 中添加多个标题。随机地

    如何在 RecyclerView 或 listview 中添加多个标题或分隔符 随机如下图突出显示 RecyclerView 中基于日期的多个标题 演示图像 您可以使用库来实现它分段回收器视图适配器 https github com lui
  • Project Euler - #1 Python 错误解决方案

    总体而言 我对编码还比较陌生 因此启动了欧拉项目 以使我的编码更进一步 花了一些时间思考如何自己解决第一个问题并尝试使用递归函数 不幸的是总是遇到同样的错误 266333 我错过了什么 有什么重大错误值得学习吗 原问题是 如果我们列出所有
  • 如果我使用 iPad 尺寸创建应用程序,如何找到 iPhone 尺寸的“安全区域”?

    我正在创建一个游戏 想要使用 iPad 尺寸设置 横向 1024x768 据我所知 使用 iPad 设置只会在 iPhone 上裁剪掉部分高度 假设我有一张 iPad 的 2048x1536 背景图像 1024x768 和 iPhone 6
  • 为什么 Node 比 Chrome 慢 10 倍?

    我正在运行我的Z80模拟器 https github com lkesteloot z80 emulator在 Chrome 和 Node 中 我在 Chrome 中获得的性能大约是 Node 中的 10 倍 100k Z80 指令在 Ch
  • 在 python 中创建线程

    我有一个脚本 我希望一个函数与另一个函数同时运行 我看过的示例代码 import threading def MyThread threading thread doing something def MyThread2 threading
  • DB::raw laravel 5.4 中的 WHERE IN 数组绑定

    我正在尝试将数组绑定为原始数组WHERE IN在 Laravel 中查询DB example arr 1 2 3 DB select DB raw select from test1 WHERE id IN arr 由于某种原因 数组没有更
  • node.js eventEmitter + http.request

    我做了这个教程Node js 事件发射器 http www mshiltonj com blog 2011 10 04 nodejs eventemitter example with custom events 效果很好 我添加了一个使用
  • 使用 Play Framework 和具有超过 22 个参数的案例类

    我已经看到了一些涉及臭名昭著的 22 个字段 参数 问题的其他问题 这是 Scala V here and here https stackoverflow com questions 33494526 how to unlimit spr
  • SqlDataSource 中的动态 WHERE 子句

    我在一个非常简单的应用程序中使用 SqlDataSource 我允许用户通过文本框为 SDS 的选择命令设置多个搜索参数 每个参数一个文本框 例如 txtFirstName txtLastName 等 我计划使用按钮单击事件处理程序来设置
  • XML 正则表达式 - 负匹配

    我在 XSD 模式中遇到负前瞻问题 当我指定
  • 将 jQuery 转换为无冲突模式

    这是我正在使用的脚本 window load function edifici artistici industriale fotovoltaico veterinaria architettonici hide if window loc
  • R - 数字的条件格式(小数位)

    我正在 R 中构建一个闪亮的应用程序 其输出之一是一个包含摘要数据的表格 此表中出现的值变化很大 从 0 003 到 3 450 023 我希望有一种方法可以格式化要显示的数字 例如 小于 0 的数字始终显示三位小数 0 到 10 之间的数
  • GROUP BY - 不对 NULL 进行分组

    我正在尝试找出一种使用 group by 函数返回结果的方法 GROUP BY 按预期工作 但我的问题是 是否可以通过忽略 NULL 字段来进行分组 这样它就不会将 NULL 分组在一起 因为我仍然需要指定字段为 NULL 的所有行 SEL
  • 如何消除嵌入 Power Bi 的报表视觉效果的灰色边框?

    When i render the power bi visuals I notice that there is a grey border on the right and left side of the image Is there
  • Sass开发工作流程问题

    我一直在尝试将 Sass 采用到我的开发工作流程中 我主要从事前端开发 因此我经常更新样式表 经过无休止的搜索 我还没有找到我认为应该是一个简单问题的答案 我同时使用 Coda 和 Textmate 因此两者的解决方案就足够了 在本地开发时
  • Python:巨大的指数被卡住,但不会引发错误

    我在 Win10 x64 上使用 Python 3 6 print 10 10 10 10 这不应该引发错误吗 当我运行它时 它只是不打印任何内容 但不会引发任何错误 没有溢出错误 没有内存错误 什么都没有 现在已经运行了大约 10 分钟
  • 捕获图像进行处理

    我将 Python 与 PIL 和 SciPy 一起使用 我想从网络摄像头捕获图像 然后使用 numpy 和 Scipy 进一步处理它 有人可以帮我解决代码吗 这是代码 有一个预定义的图像 lena 但我希望使用我自己捕获的图像而不是 le
  • 将异步函数作为函数参数的 Python 类型提示

    我试图确保函数参数是异步函数 所以我正在使用以下代码 async def test args kwargs pass def consumer function Optional Coroutine Any Any Any None fun
  • 在 Glue pythonshell 中使用 pyarrow - ModuleNotFoundError:没有名为“pyarrow.lib”的模块

    创建了一个egg and whlpyarrow 文件并将其放在 s3 上 以便在 pythonshell 作业中调用它 收到这条消息 职位代码 import pyarrow raise 错误 结构相同whl Traceback most r