Databrick消耗Rest API

问题描述

我是Azure Databricks和Scala的新手,我正在尝试使用返回JSON的HTTP REST API,我遍历了databricks文档,但没有看到任何可与rest api一起使用的数据源。有关如何使用数据块中的rest api的库或教程。如果我进行多个api调用(由于分页的原因),最好以并行方式(火花方式)完成它。

如果有一种Databricks或Spark方法可以使用REST API,我会很高兴,因为我很震惊地发现文档中没有关于api数据源的信息。

解决方法

在我看来,您想要的是将要发出HTTP请求的库导入scala。我建议使用HTTP而不是更高级别的REST接口,因为分页可能在REST库中处理,并且可能支持也可能不支持并行性。 使用较低级别的HTTP进行管理可让您取消分页。然后,您可以使用您选择的并行机制。

那里有很多库,但是推荐一个特定的库不在范围之内。

如果您不想导入库,则可以让scala笔记本调用另一个运行标准库中包含HTTP的语言的笔记本。然后,该笔记本会将数据返回到scala笔记本。

,

这是一个Simple实现。

基本思想是spark.read.json可以阅读RDD

因此,只需通过RDD调用创建一个GET,然后将其读取为常规数据框。

%spark
def get(url: String) = scala.io.Source.fromURL(url).mkString

val myUrl = "https://<abc>/api/v1/<xyz>"

val result = get(myUrl)

val jsonResponseStrip = result.toString().stripLineEnd 

val jsonRdd = sc.parallelize(jsonResponseStrip :: Nil)

val jsonDf = spark.read.json(jsonRdd)

就是这样。