使用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 文件
使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件