使用Databricks将api的结果写入数据湖

问题描述

我正在使用以下代码进行api调用

import requests   
response = requests.get('https://myapi.com/api/v1/city',auth=('user','password'))
data = response.json()

想将JSON有效内容另存为Azure Data Lake Storage Gen2中的json文档,并从此处读取文档。

data.write.json("wasbs://<file_system>@<storage-account-name>.dfs.core.windows.net/city.json")

错误 AttributeError:“列表”对象没有属性“写”

解决方法

您需要通过使用

将json列表data变量转换为数据帧

df=spark.createDataFrame(data,schema)df=spark.read.json(data)

然后使用写入到Azure DataLake存储

df.write.json("wasbs://<file_system>@<storage-account-name>.dfs.core.windows.net/city.json")

Or 如果您不想转换为 json ,请使用

spark.createDataFrame(data,schema).saveAsTextFile("<path>")


更新

尝试通过使用 Row 对象创建数据框。

Example:

data=[{'id': 1}]

from pyspark.sql import *

df=spark.createDataFrame([Row(**i) for i in data])
df.show()
#+---+
#| id|
#+---+
#|  1|
#+---+

df.write.json("<path>")