开始
加载和管理数据
处理数据
政府
引用和资源
2023年1月13日更新
给我们反馈
请注意
CLI功能不可用这个版本砖在谷歌的云上。
本文包含的示例演示如何使用砖REST API。
在下面的例子中,替换< databricks-instance >与工作空间的URL你的砖部署。
< databricks-instance >
作为一个安全最佳实践,验证自动化工具时,系统中,脚本和应用程序,砖属于建议您使用访问令牌服务主体而不是用户工作区。为服务主体,创建访问令牌管理服务主体的访问令牌。
学习如何验证REST API,审查身份验证使用砖个人的访问令牌。
本文中的示例假设您正在使用砖个人访问令牌。在下面的例子中,替换< your-token >与你的个人访问令牌。的旋度示例假设您存储数据砖API凭证. netrc。Python示例使用持票人身份验证。虽然例子显示存储代码中的令牌,利用在砖安全凭证,我们建议你遵循保密管理用户指南。
< your-token >
旋度
这个示例使用砖REST API 2.0版。
curl - n - h“接受编码:gzip”https:// < databricks-instance > / api / 2.0 /集群/ > clusters.gz列表
数据上传的单一API调用的数量不能超过1 mb。上传一个文件大于1 mb DBFS,使用流API,这是一个组合创建,addBlock,关闭。
创建
addBlock
关闭
这里是如何执行此操作的一个例子使用Python。这个示例使用砖REST API 2.0版。
进口json进口请求进口base64域=“< databricks-instance >”令牌=“< your-token >”BASE_URL=“https://% s/ api / 2.0 / dbfs /”%(域)defdbfs_rpc(行动,身体):”“”一个helper函数DBFS API请求,请求/响应编码/解码为JSON " " "响应=请求。帖子(BASE_URL+行动,头={“授权”:不记名的% s”%令牌},json=身体)返回响应。json()#创建一个将用于处理添加块处理=dbfs_rpc(“创造”,{“路径”:“/ temp / upload_large_file”,“覆盖”:“真正的”})(“处理”]与开放(' / /地方/文件')作为f:而真正的:#一块可以最多1 mb块=f。读(1< <20.)如果不块:打破数据=base64。standard_b64encode(块)dbfs_rpc(“addblock”,{“处理”:处理,“数据”:数据})#关闭处理完成上传dbfs_rpc(“关闭”,{“处理”:处理})
下面的例子显示了如何启动Python 3使用砖REST API和集群请求Python HTTP库。这个示例使用砖REST API 2.0版。
进口请求域=“< databricks-instance >”令牌=“< your-token >”响应=请求。帖子(“https://% s/ api / 2.0 /集群/创建”%(域),头={“授权”:不记名的% s”%令牌},json={“cluster_name”:“my-cluster”,“spark_version”:“7.5.x-scala2.12”,“node_type_id”:“n1-highmem-4”,“spark_env_vars”:{“PYSPARK_PYTHON”:“砖/ python3 / bin / python3”},“num_workers”:25})如果响应。status_code= =200年:打印(响应。json()(“cluster_id”])其他的:打印(“错误启动集群:% s:% s”%(响应。json()(“error_code”),响应。json()(“消息”)))
本小节展示如何创建Python,火花提交,JAR工作和运行JAR任务并查看它的输出。
这个例子展示了如何创建一个Python的工作。它使用Apache火花Python火花π估计。这个示例使用砖REST API 2.0版。
下载Python文件包含的示例和上传砖文件系统(DBFS)是什么?使用砖CLI的设置和文档。
dbfs cpπ。py dbfs: / docs / pi.py
创建工作。
curl - n - x - h“application / json内容类型:- d\”{“名称”:“SparkPi Python工作”," new_cluster ": {:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”,“num_workers”: 2}," spark_python_task ": {:“python_file dbfs: / docs / pi.py”,“参数”:(“10”]}}'https:// < databricks-instance > / api / 2.0 /工作/创建
这个例子展示了如何创建一个spark-submit工作。它使用Apache火花SparkPi例子和砖REST API的版本2.0。
下载JAR包含示例和上传的JAR砖文件系统(DBFS)是什么?使用砖CLI的设置和文档。
dbfs cp sparkpi -装配- 0.1。jar dbfs: / docs / sparkpi.jar
curl - n\- x - h后“application / json内容类型:- d\”{“名称”:“SparkPi spark-submit工作”," new_cluster ": {:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”,“num_workers”: 2}," spark_submit_task ": {“参数”:(”——阶级”,“org.apache.spark.examples.SparkPi”,“dbfs: / docs / sparkpi.jar”,“10”]}}'https:// < databricks-instance > / api / 2.0 /工作/创建
这个例子展示了如何创建一个spark-submit工作运行R脚本。这个示例使用砖REST API 2.0版。
上传文件砖文件系统(DBFS)是什么?使用砖CLI的设置和文档。
dbfs cp your_code。/ / your_code.R R dbfs: /路径
如果代码使用SparkR,它必须首先安装包。砖运行时包含SparkR源代码。从它的本地目录安装SparkR包下面的例子所示:
install.packages(“/砖/火花/ R /包裹”,回购=零)图书馆(SparkR)sparkR.session()n< -nrow(createDataFrame(虹膜))write.csv(n,“/ dbfs /道路/ / num_rows.csv”)
砖运行时安装最新版本的sparklyr凹口。如果代码使用sparklyr,您必须指定火花大师的URLspark_connect。形成火花主URL,使用SPARK_LOCAL_IP环境变量的IP,并使用默认端口7077。例如:
spark_connect
SPARK_LOCAL_IP
图书馆(sparklyr)主< -粘贴(“火花:/ /”,Sys.getenv(“SPARK_LOCAL_IP”),”:7077”,9月=”“)sc< -spark_connect(主)iris_tbl< -copy_to(sc,虹膜)write.csv(iris_tbl,“/ dbfs /道路/ / sparklyr_iris.csv”)
curl - n\- x - h后“application / json内容类型:\- d”{“名称”:“R脚本spark-submit工作”," new_cluster ": {:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”,“num_workers”: 2}," spark_submit_task ": {“参数”(“dbfs: /路径:/ / your_code。R”)}}'https:// < databricks-instance > / api / 2.0 /工作/创建
这返回一个作业标识然后,您可以使用运行工作。
作业标识
运行工作使用作业标识。
curl - n\- x - h后“application / json内容类型:\- d”{“job_id”: <作业id >}’https:// < databricks-instance > / api / 2.0 /工作/运行
这个例子显示了如何创建并运行一个JAR任务。它使用Apache火花SparkPi例子和砖REST API的版本2.0。
下载JAR包含的例子。
上传JAR砖实例使用API:
curl - n\- ffiledata=@“SparkPi-assembly-0.1.jar”\- f路径=“/ docs / sparkpi.jar”\- f覆盖=真正的\https:// < databricks-instance > / api / 2.0 / dbfs /把
一个成功的调用返回{}。否则你将会看到一条错误消息。
{}
获得所有火花版本的列表之前创建你的工作。
curl - n https:// < databricks-instance > / api / 2.0 /集群/ spark-versions
这个示例使用7.3.x-scala2.12。看到运行时版本字符串关于火花集群版本的更多信息。
7.3.x-scala2.12
创建工作。JAR被指定为一个库和主类中引用的名字是火花JAR任务。
curl - n - x - h“application / json内容类型:\- d”{“名称”:“SparkPi JAR工作”," new_cluster ": {:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”,“aws_attributes”:{“可用性”:“ON_DEMAND”},“num_workers”: 2},“库”:[{“罐子”:“dbfs: / docs / sparkpi.jar”})," spark_jar_task ": {:“main_class_name org.apache.spark.examples.SparkPi”,“参数”:“10”}}'https:// < databricks-instance > / api / 2.0 /工作/创建
运行工作使用运行现在:
运行现在
导航到https:// < databricks-instance > / #工作/ <作业id >你可以看到你的工作运行。
https:// < databricks-instance > / #工作/ <作业id >
你也可以检查它的API使用以前的请求返回的信息。
curl - n https:// < databricks-instance > / api / 2.0 /工作/运行/ ? run_id=<运行id >|金桥
它应该返回类似:
{“job_id”:35,“run_id”:30.,“number_in_job”:1,“original_attempt_run_id”:30.,“状态”:{“life_cycle_state”:“终止”,“result_state”:“成功”,“state_message”:”“},“任务”:{“spark_jar_task”:{“jar_uri”:”“,“main_class_name”:“org.apache.spark.examples.SparkPi”,“参数”:(“10”),“run_as_repl”:真正的}},“cluster_spec”:{“new_cluster”:{“spark_version”:“7.3.x-scala2.12”,“node_type_id”:“<节点类型>”,“enable_elastic_disk”:假,“num_workers”:1},“库”:({“罐子”:“dbfs: / docs / sparkpi.jar”}]},“cluster_instance”:{“cluster_id”:“0412 - 165350 type465”,“spark_context_id”:“5998195893958609953”},“start_time”:1523552029282,“setup_duration”:211000年,“execution_duration”:33000年,“cleanup_duration”:2000年,“触发”:“ONE_TIME”,“creator_user_name”:“…”,“run_name”:“SparkPi JAR工作”,“run_page_url”:“< databricks-instance > / ? o = 3901135158661429 # 35 /运行/工作/ 1”,“run_type”:“JOB_RUN”}
查看工作输出,参观工作运行细节页面。
执行命令,时间=1523552263909。π是约3.13973913973914
创建一个集群为表启用访问控制,指定以下spark_conf在你的请求主体属性。这个示例使用砖REST API 2.0版。
spark_conf
curl - x发布https:// < databricks-instance > / api / 2.0 /集群创建- d”{:“cluster_name my-cluster-from-api”,:“spark_version 7.5.x-scala2.12”,:“node_type_id n1-highmem-4”," spark_conf ": {“spark.databricks.acl.dfAclsEnabled”:没错,“spark.databricks.repl。allowedLanguages”:“python, sql”},“num_workers”: 1、" custom_tags ": {“costcenter”:“标签”,:“applicationname Tags1”}}'
这里有一些例子使用工作区API列表,获取信息,创建、删除、导出和导入工作区对象。
以下cURL命令在工作区中列出了一个路径。这个示例使用砖REST API 2.0版。
curl - n - x - h“application / json内容类型:- d\”{“路径”:“/用户/ user@example.com/”}'https:// < databricks-instance > / api / 2.0 /工作区/列表
状态的响应应该包含一个列表:
{“对象”:({“object_type”:“目录”,“路径”:“/用户/ user@example.com/folder”},{“object_type”:“笔记本”,“语言”:“巨蟒”,“路径”:“/用户/ user@example.com/notebook1”},{“object_type”:“笔记本”,“语言”:“SCALA”,“路径”:“/用户/ user@example.com/notebook2”}]}
如果路径是一个笔记本,响应包含一个数组,其中包含的状态输入笔记本。
以下cURL命令得到的状态路径在工作区中。这个示例使用砖REST API 2.0版。
curl - n - x - h“application / json内容类型:- d\”{“路径”:“/用户/ user@example.com/”}'https:// < databricks-instance > / api / 2.0 / workspace /获得状态
响应应该包含的状态输入路径:
{“object_type”:“目录”,“路径”:“/用户/ user@example.com”}
以下cURL命令创建了一个文件夹。它创建的文件夹递归mkdir- p。如果该文件夹已经存在,它将什么也不做和成功。这个示例使用砖REST API 2.0版。
mkdir- p
curl - n - x - h“application / json内容类型:- d\”{“路径”:“/用户/ user@example.com/new/folder”}'https:// < databricks-instance > / api / 2.0 / workspace / mkdir
如果请求成功,将返回一个空的JSON字符串。
以下cURL命令删除一个笔记本或文件夹。您可以启用递归递归删除一个非空文件夹。这个示例使用砖REST API 2.0版。
递归
curl - n - x - h“application / json内容类型:- d\”{“路径”:“/用户/ user@example.com/new/folder”,“递归”:“假”}'https:// < databricks-instance > / api / 2.0 / workspace /删除
以下cURL命令出口一个笔记本。笔记本电脑可以导出以下格式:源,HTML,JUPYTER,DBC。一个文件夹只能导出DBC。这个示例使用砖REST API 2.0版。
源
HTML
JUPYTER
DBC
curl - n - x得到\- d”{“路径”:“/用户/ user@example.com/notebook”,“格式”:“源”}”\https:// < databricks-instance > / api / 2.0 /工作区/出口
响应包含base64编码的笔记本的内容。
{“内容”:“Ly8gRGF0YWJyaWNrcyBub3RlYm9vayBzb3VyY2UKcHJpbnQoImhlbGxvLCB3b3JsZCIpCgovLyBDT01NQU5EIC0tLS0tLS0tLS0KCg = = "}
或者,您可以直接下载导出的笔记本。
curl - n - x得到“https:// < databricks-instance > / api / 2.0 /工作区/出口?格式= SOURCE&direct_download =正确道路= /用户/ user@example.com/notebook”
响应将导出的笔记本的内容。
以下cURL命令在工作区中导入一个笔记本。多种格式(源,HTML,JUPYTER,DBC支持)。如果格式是源,您必须指定语言。的内容参数包含base64编码的笔记本的内容。您可以启用覆盖覆盖现有的笔记本。这个示例使用砖REST API 2.0版。
格式
语言
内容
覆盖
curl - n - x - h“application / json内容类型:- d\”{“路径”:“/用户/ user@example.com/new-notebook”,“格式”:“源”,“语言”:“SCALA”,“内容”:“Ly8gRGF0YWJyaWNrcyBub3RlYm9vayBzb3VyY2UKcHJpbnQoImhlbGxvLCB3b3JsZCIpCgovLyBDT01NQU5EIC0tLS0tLS0tLS0KCg = = ",“覆盖”:“假”}'https:// < databricks-instance > / api / 2.0 / workspace /导入
或者,您可以导入一个笔记本通过多部分表单post。
curl - n - x发布https:// < databricks-instance > / api / 2.0 / workspace /导入\- f路径=“/用户/ user@example.com/new-notebook”- f格式=源- f语言=SCALA - f覆盖=真正的- f内容=@notebook.scala