0

エラーなしでPydoopをビルドしてインストールできたので、たとえば、次のことができます。

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

pipesただし、またはなどのメインの Pydoop モジュールをインポートしようとすると、次のように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_memlibssl(OpenSSL) のシンボルなので、Pydoop はこの共有ライブラリを見つけることができないと思います。私はそれが利用可能であり、.so(たとえば、ではなく.so.1)で終わり、LD_LIBRARY_PATH.

では、このエラーの理由は何でしょうか? どうすれば修正できますか (ビルドオプション? 環境変数?)

どんな助けでも大歓迎です。

4

2 に答える 2

1

パイプエラーについてはわかりませんが、_hdfs_2_0_0_cdh_4_3_0 の問題に遭遇しました (私は Hadoop の別のバージョンでしたが、問題は似ていると思います)。

setup.py スクリプトは、pydoop の /usr/local/lib/python2.7/dist-packages に卵ファイルを作成する必要があるようですが、セットアップでは、それが単なるフォルダーである必要があります (_hdfs_2_0_0_cdh_4_3_0.so ファイルが含まれます)。初期化)。

解決策は非常に簡単です: /usr/local/lib/python2.7/dist-packages/pydoop-0.11.1.egg-info またはあなたのバージョンに相当するものを削除するだけです。

于 2014-03-07T18:56:01.267 に答える
1

使用しているOSのバージョンは何ですか? LD_PRELOAD を libssl のパスに設定してみてください。

export LD_PRELOAD=/lib/x86_64-linux-gnu/libssl.so.1.0.0
于 2013-10-29T10:32:25.670 に答える