Pydoopを使用してhdfsからファイルを読み込み、使用する場合:
import pydoop.hdfs as hd
with hd.open("/home/file.csv") as f:
print f.read()
Stdoutのファイルが表示されます。
このファイルをデータフレームとして読み取る方法はありますか?パンダのread_csv( "/ home/file.csv")を使用してみましたが、ファイルが見つからないというメッセージが表示されます。正確なコードとエラーは次のとおりです。
>>> import pandas as pd
>>> pd.read_csv("/home/file.csv")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/pandas/io/parsers.py", line 498, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/lib64/python2.7/site-packages/pandas/io/parsers.py", line 275, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/usr/lib64/python2.7/site-packages/pandas/io/parsers.py", line 590, in __init__
self._make_engine(self.engine)
File "/usr/lib64/python2.7/site-packages/pandas/io/parsers.py", line 731, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "/usr/lib64/python2.7/site-packages/pandas/io/parsers.py", line 1103, in __init__
self._reader = _parser.TextReader(src, **kwds)
File "pandas/parser.pyx", line 353, in pandas.parser.TextReader.__cinit__ (pandas/parser.c:3246)
File "pandas/parser.pyx", line 591, in pandas.parser.TextReader._setup_parser_source (pandas/parser.c:6111)
IOError: File /home/file.csv does not exist
hdfs
についてはほとんど何も知りませんが、次のことが機能するのではないかと思います。
_with hd.open("/home/file.csv") as f:
df = pd.read_csv(f)
_
_read_csv
_はファイルハンドル、または実際にはファイルハンドルをフィードする反復可能オブジェクトで機能すると思います。私はnumpy
csvリーダーがそうすることを知っています。
pd.read_csv("/home/file.csv")
は、通常のPython file open
が機能する場合、つまり、ファイルを通常のローカルファイルとして読み取る場合に機能します。
_with open("/home/file.csv") as f:
print f.read()
_
しかし、明らかに_hd.open
_は他の場所またはプロトコルを使用しているため、ファイルはローカルではありません。私の提案がうまくいかない場合は、あなた(または私たち)はhdfs
ドキュメントをさらに掘り下げる必要があります。