python - 从 hdfs 读取 csv 文件作为数据帧

标签 python hadoop pandas hdfs

我正在使用 pydoop 从 hdfs 读取文件,当我使用时:

import pydoop.hdfs as hd
with hd.open("/home/file.csv") as f:
    print f.read()

它向我显示了标准输出中的文件。

我有什么办法可以将这个文件作为数据框读入吗?我试过使用 pandas 的 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 文件 open 有效 - 即它将文件读取为常规本地文件。

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

但显然 hd.open 使用了其他一些位置或协议(protocol),因此该文件不是本地的。如果我的建议不起作用,那么您(或我们)需要深入研究 hdfs 文档。

关于python - 从 hdfs 读取 csv 文件作为数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642020/

相关文章:

python - 理解 Python 的 Base64 解码字节表示

python - 计算字母在单词中出现的次数,并将其以以下格式:

hadoop - Oozie发行版创作失败

python - 通过连接列在 Python 中格式化时间

python - 我想将 pandas DataFrame 中的两列相乘并将结果添加到新列中

python - 设置 kivy 整数的最小值和最大值

python - 你能在不加载整个图像的情况下循环遍历图像中的像素吗?

hadoop - Hadoop M/R作业链接无一异常(exception)都无法正常工作

hadoop - 查看hadoop中文件的 block 数

python - 如何使用 python-pandas 和 gensim 将数据框中的单词映射到整数 ID?