pydoop:没有名为\u hdfs的模块_*

w1jd8yoj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(542)

我能够构建和安装pydoop而没有错误,因此,例如,我可以执行以下操作:

>>> import pydoop
>>> pydoop.__version__
'0.10.0'

但是,当我尝试导入主要的pydoop模块时,例如 pipes 或者 hdfs 我要走了 ImportError :

>>> import pydoop.hdfs
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pydoop/hdfs/__init__.py", line 79, in <module>
    from fs import hdfs, default_is_local
  File "pydoop/hdfs/fs.py", line 28, in <module>
    hdfs_ext = pydoop.import_version_specific_module("_hdfs")
  File "pydoop/__init__.py", line 111, in import_version_specific_module
    return import_module(complete_mod_name(name))
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named _hdfs_2_0_0_cdh_4_3_0

另外,当我尝试使用 pydoop script 我得到了这样一个暗示:

...
ImportError: /usr/local/lib/python2.7/dist-packages/pydoop/_pipes_2_0_0_cdh_4_3_0.so: undefined symbol: BIO_s_mem
``` `BIO_s_mem` 是来自 `libssl` (openssl),所以我猜pydoop找不到这个共享库。我确保它是可用的,以 `.so` (例如,与之相反, `.so.1` )而且是在 `LD_LIBRARY_PATH` . 
那么这个错误的原因是什么呢?如何修复它(生成选项?环境变量?)
感谢您的帮助。
6ioyuze2

6ioyuze21#

您使用的操作系统版本是什么?尝试将ldu preload设置为libssl的路径,例如:

export LD_PRELOAD=/lib/x86_64-linux-gnu/libssl.so.1.0.0
iovurdzv

iovurdzv2#

不确定管道错误,但我遇到了您的问题,您的问题是\u hdfs\u 2\u 0\u cdh\u 4\u 3\u 0(我的是不同版本的hadoop,但我相信问题是类似的)。
py脚本似乎想在/usr/local/lib/python2.7/dist-packages中为pydoop创建一个egg文件,但安装程序要求它只是一个文件夹(其中将包含hdfs犚2犚0犚cdh犚4犚3犚0.so文件)。
解决方案非常简单:只需删除/usr/local/lib/python2.7/dist-packages/pydoop-0.11.1.egg-info或同等版本即可。

相关问题