メニューからはできますが、ノートブックから実行できたらと思ったのでトライします。
REST APIがあるのでこちらを使います。
# 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())