2016-02-26 169 views
4

我使用pydoop從HDFS文件讀取數據框中,當我使用:讀入csv文件從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 

回答

5

我知道接下來一無所知hdfs,但我不知道下面可能的工作:

with hd.open("/home/file.csv") as f: 
    df = pd.read_csv(f) 

我認爲read_csv作品與文件句柄,或事實上任何可以反饋它的行。我知道csv讀者做的numpy

pd.read_csv("/home/file.csv")如果常規Python文件open有效 - 即它將文件讀取爲常規本地文件,它將會工作。

with open("/home/file.csv") as f: 
    print f.read() 

但顯然hd.open使用一些其他的位置或協議,因此該文件不是本地的。如果我的建議不起作用,那麼您(或我們)需要深入研究hdfs文檔。

+0

完美的作品,謝謝! – lordingtar