使用zeppelin在csv中导出数据

Nip*_*pun 7 apache-zeppelin

我需要从zeppelin中的%sql解释器导出csv格式的数据.我怎么能这样做?我需要添加一个按钮并点击它,它应该导出csv中的数据,如客户端的sql解释器中的zeppelin中的图形所示.

sha*_*dzy 4

目前,不支持此功能(Zeppelin 0.5.6)。不过,似乎这将在下一个版本(0.6.0)中添加。您可以从Zeppelin git page克隆它,或者您可以使用我正在使用的下一个解决方法:

  1. 您将需要尝试导出的笔记本和段落的 ID。您可以通过单击要导出的段落的选项菜单中的“链接此段落”来获取它们。当你这样做时,你会得到一个新窗口。ID 位于新窗口的 url 中:http://localhost:8080/#/notebook/{Notebook-ID}/paragraph/{Paragraph-ID}?asIframe
  2. 使用Zeppelin Notebook API。发送 HTTP-GET 请求至http://localhost:8080/api/notebook/{Notebook-ID}/paragraph/{Paragraph-ID}
  3. 响应是一个 json。该字段body.result.msg是一个字符串,将结果保存为 TSV(制表符分隔值)。这几乎就是您所需要的(您可以解析它并将\t字符串中的所有内容替换,为以获取 CSV 文件)。

一个简单的代码可以让您立即解决这个问题。


编辑:

下面是一个 Python 脚本,它正是执行此操作的。调用getTSV并向其发送单击“链接此段落”所获得的段落的 url:

import requests
import json

def parseURL(paragraphUrl):
    url = paragraphUrl.split(":8080")
    address = url[0]
    vals = url[1].split("/")
    notebook = vals[3]
    paragraph = vals[5].split("?")[0]
    return [address, notebook, paragraph]

def getData(address, notebook, paragraph):
    response = requests.get(address + ":8080/api/notebook/" + notebook + "/paragraph/" + paragraph)
    return response.text

def getTSV(paragraphUrl):
    # This function gets the same url that you get from clicking on "Link this paragraph"
    [address, notebook, paragraph] = parseURL(paragraphUrl)
    response = getData(address,notebook,paragraph)
    return json.loads(response)["body"]["result"]["msg"]
Run Code Online (Sandbox Code Playgroud)

  • 请注意,Zeppelin 仅显示前 1000 行。 (2认同)