excel - 使用python写入HDFS中的excel文件
问题描述
尝试使用 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'
解决方案
如果您不在 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()
推荐阅读
- javascript - WebGL - INVALID_OPERATION:texImage2D:ArrayBufferView 不够大,无法请求
- jekyll - 从输出中排除 Jekyll 帖子(不输出单个 HTML 文件)
- android - staggeredGridLayoutManager 仅在列之间的边缘没有空间
- excel - 从VBA中的文本文件中提取信息
- android - android中android.arch.lifecycle的iOS equivalnet?
- java - javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:587 无法解决此问题
- windows - 在 git bash 中使用 python json.tool 时出现“stdin is not a tty”错误
- c - 错误:使用类型“sfVector2f”初始化类型“unsigned int”时类型不兼容
- java - 如何查看向下转换在 Java 中是否合法?
- html - html 元标记未在框架集的父级中继承