2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonによるDatabricksノートブックのHTML形式でのエキスポート

Last updated at Posted at 2024-02-13

メニューからはできますが、ノートブックから実行できたらと思ったのでトライします。

REST APIがあるのでこちらを使います。

Export a workspace object

# URLの取得
databricksURL = "https://" + spark.conf.get("spark.databricks.workspaceUrl")

# トークンの取得
myToken = dbutils.notebook.entry_point.getDbutils().notebook().getContext().apiToken().getOrElse(None)

REST APIを呼び出します。ここで重要なのはdirect_downloadです。デフォルトはfalseなので指定は不要なのですが明示的に記述しています。これがfalseの場合、base64でエンコードされた文字列が返却されます。

import requests
import json
import base64
 
header = {'Authorization': 'Bearer {}'.format(myToken)}
endpoint = '/api/2.0/workspace/export'
payload = """{
"path": "/Workspace/Users/takaaki.yayoi@databricks.com/20240213_notebook_html_export/export notebook as html",
"format": "HTML",
"direct_download": "false"
}
"""
 
# REST APIの呼び出し
resp = requests.get(
  databricksURL + endpoint,
  data=payload.encode("utf-8"),
  headers=header
)

レスポンスはJSON形式なのでパースします。

'{"content":"PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8bWV0YSBuYW1lPSJkYXRhYnJpY2tzLWh0bWwtdmVyc2lvbiIgY29udGVudD0iMSI+Cjx0aXRsZT5leHBvcnQgbm90ZWJvb2sgYXMgaHRtbCAtIERhdGFicmlj
# JSONのパース
d = json.loads(resp.text)
d['content']

# HTMLへの書き込み
with open("/Workspace/Users/takaaki.yayoi@databricks.com/20240213_notebook_html_export/output.html", "w") as fh:
    fh.write(base64.b64decode(d['content']).decode())

HTMLとして保存されています。
Screenshot 2024-02-13 at 10.55.11.png

エキスポートして開くときちんとHTMLになっています。
Screenshot 2024-02-13 at 10.55.50.png

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?