使用RESTAPI(Scala)将数据摄取到数据库中
我需要从databricks调用restapi,最好使用Scala来获取数据并在databricks中持久化。这是我第一次这样做,我需要帮助。你们中有谁能一步一步地告诉我如何做到这一点吗?。API团队已经创建了一个服务主体,并授予了对API的访问权。因此,需要通过SPN进行身份验证使用RESTAPI(Scala)将数据摄取到数据库中,scala,rest,databricks,azure-databricks,Scala,Rest,Databricks,Azure Databricks,我需要从databricks调用restapi,最好使用Scala来获取数据并在databricks中持久化。这是我第一次这样做,我需要帮助。你们中有谁能一步一步地告诉我如何做到这一点吗?。API团队已经创建了一个服务主体,并授予了对API的访问权。因此,需要通过SPN进行身份验证 谢谢 不建议使用RESTAPI将数据摄取到数据库中 原因:单个API调用上传的数据量不能超过1MB 要将大于1MB的文件上载到DBFS,请使用流式API,它是create、addBlock和close的组合 下面是一
谢谢 不建议使用RESTAPI将数据摄取到数据库中 原因:单个API调用上传的数据量不能超过1MB 要将大于1MB的文件上载到DBFS,请使用流式API,它是create、addBlock和close的组合 下面是一个如何使用Python执行此操作的示例
import json
import base64
import requests
DOMAIN = '<databricks-instance>'
TOKEN = b'<your-token>'
BASE_URL = 'https://%s/api/2.0/dbfs/' % (DOMAIN)
def dbfs_rpc(action, body):
""" A helper function to make the DBFS API request, request/response is encoded/decoded as JSON """
response = requests.post(
BASE_URL + action,
headers={"Authorization: Bearer %s" % TOKEN },
json=body
)
return response.json()
# Create a handle that will be used to add blocks
handle = dbfs_rpc("create", {"path": "/temp/upload_large_file", "overwrite": "true"})['handle']
with open('/a/local/file') as f:
while True:
# A block can be at most 1MB
block = f.read(1 << 20)
if not block:
break
data = base64.standard_b64encode(block)
dbfs_rpc("add-block", {"handle": handle, "data": data})
# close the handle to finish uploading
dbfs_rpc("close", {"handle": handle})
导入json
导入base64
导入请求
域=“”
令牌=b''
基本URL='https://%s/api/2.0/dbfs/'%(域)
def dbfs_rpc(动作,主体):
“”“一个用于发出DBFS API请求的帮助函数,请求/响应被编码/解码为JSON”“”
response=requests.post(
基本URL+操作,
标头={“授权:承载%s”%TOKEN},
json=body
)
返回response.json()
#创建将用于添加块的句柄
handle=dbfs_-rpc(“创建”,{“路径”:“/temp/upload_-large_-file”,“覆盖”:“true”})[handle']
将open('/a/local/file')作为f:
尽管如此:
#一个数据块最多可以是1MB
block=f.read(1如果您想上传jar文件或非ascii文件而不是
dbfs_rpc(“添加块,{“句柄”:句柄,“数据”:数据}”)
使用
dbfs_rpc(“添加块”,“句柄”:句柄,“数据”:data.decode('UTF8')})
其他详细信息相同。Hi Sujatha,如果我的答案对您有帮助,您可以将其作为答案接受(单击答案旁边的复选标记,将其从灰色变为填充)。这对其他社区成员可能会有所帮助。谢谢。