使用python写入HDFS中的excel文件

Posted

技术标签:

【中文标题】使用python写入HDFS中的excel文件【英文标题】:Write to an excel file in HDFS using python 【发布时间】:2020-05-19 10:44:19 【问题描述】:

尝试使用 zeppelin 笔记本在 HDFS 上使用 Openpyxl 将数据帧写入 excel 工作簿。

下面是我的代码 -

with pd.ExcelWriter('hdfs:///ip/docs/excel_files/ds.xlsx', engine="openpyxl", mode="w") as writer:
    df.to_excel(writer, sheet_name='Sheet3') 

错误 -

Fail to execute line 2:      df.to_excel(writer, sheet_name='Sheet3')
Traceback (most recent call last):
  File "/tmp/zeppelin_pyspark-8199079202247699001.py", line 380, in <module>
    exec(code, _zcUserQueryNameSpace)
  File "<stdin>", line 2, in <module>
  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/excel.py", line 1191, in __exit__
    self.close()
  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/excel.py", line 1195, in close
    return self.save()
  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/io/excel.py", line 1228, in save
    return self.book.save(self.path)
  File "/opt/anaconda3/lib/python3.7/site-packages/openpyxl/workbook/workbook.py", line 396, in save
    save_workbook(self, filename)
  File "/opt/anaconda3/lib/python3.7/site-packages/openpyxl/writer/excel.py", line 292, in save_workbook
    archive = ZipFile(filename, 'w', ZIP_DEFLATED, allowZip64=True)
  File "/opt/anaconda3/lib/python3.7/zipfile.py", line 1204, in __init__
    self.fp = io.open(file, filemode)

FileNotFoundError: [Errno 2] No such file or directory: 'hdfs:///ip/docs/excel_files/ds.xlsx'

【问题讨论】:

试试这些是否有帮助。***.com/questions/37261624/…***.com/questions/12485718/… 你可以试试Snakebite,一个HDFS客户端和Spotify的包装器:github.com/spotify/snakebite 【参考方案1】:

如果您不在 Windows 上,请尝试像这样使用 pydoop:

import pydoop.hdfs as pydoop_hdfs

with pydoop_hdfs.open('hdfs://path_to_file/file.xlsx', mode='wb') as f:
    with pd.ExcelWriter(f, engine='xlsxwriter') as writer:
        df.to_excel(writer, sheet_name='Sheet')
        writer.save()

【讨论】:

以上是关于使用python写入HDFS中的excel文件的主要内容,如果未能解决你的问题,请参考以下文章

求助:使用Python将excel中的内容写入到txt文件

使用 Python 将列表中的数据帧写入多个 excel 文件

Python写入hdfs文件

使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件

使用 pandas 在 python 中将值写入 excel

使用python读取excel中的数据,并重新写入到新的excel中