我的齐柏林飞艇安装(版本-0.9.0-preview1)在服务器上。我有一个sparkDataframe,我将其转换为pandasDataframe,假设它是一个简单的“df.to_csv()”。我确实意识到,当我使用%sql将dataframe绘制为sql表时,在功能区的右上角有一个下载csv的选项。只有当数据中的行数小于“zeppelin.spark.maxresult”时,这种方法才有效。我将“zeppelin.spark.maxresult”的值增加到25000,但这会导致浏览器速度变慢,应用程序崩溃。所以我把它降到了1万。我们只需要绘制10000行,但如果需要,我们希望能够在本地下载整个Dataframe,而不仅仅是有一个截断的数据集(等于'zeppelin.spark.maxresult'行)。
搜索之后,我发现了一个python函数,如下所示:
import base64
import pandas as pd
from IPython.display import HTML
def create_download_link( df, title = "Download CSV file", filename = "data.csv"):
csv = df.to_csv()
b64 = base64.b64encode(csv.encode())
payload = b64.decode()
html = '<a download="{filename}" href="data:text/csv;base64,{payload}" target="_blank">{title}</a>'
html = html.format(payload=payload,title=title,filename=filename)
return HTML(html)
df = pd.DataFrame(data = [[1,2],[3,4]], columns=['Col 1', 'Col 2'])
create_download_link(df)
但我明白了 <IPython.core.display.HTML object>
在结果中。
我甚至试图调整这个代码,而不是 return HTML(html)
我把它改成了 display(HTML(html))
在看了这里之后,我得到了同样的结果
另一个解决方案如这里所描述的jupyter笔记本电脑。我尝试了部分建议代码:
def csv_download_link(df, csv_file_name):
"""Display a download link to load a data frame as csv from within a Jupyter notebook"""
df.to_csv(csv_file_name, index=False)
from IPython.display import FileLink
display(FileLink(csv_file_name))
csv_download_link(df, 'df.csv')
给了我一个csv保存在服务器上的路径 /folder/folder/df.csv
.
现在我得想办法从 <IPython.core.display.HTML object>
或者我如何创建一个url,让我从服务器的位置下载文件 /folder/folder/df.csv
. 按照齐柏林飞艇路由系统的设置方式,即使我将其保存在齐柏林飞艇内的笔记本文件夹(所有笔记本所在的文件夹)中,我仍然无法使用 http://server.com/#/notebook/df.csv
或者 http://server.com/notebook/df.csv
目录中的csv文件。据我所知,这可能是一种安全措施。
如有任何建议,将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!