首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花读取带有请求参数的JSON

火花读取带有请求参数的JSON
EN

Stack Overflow用户
提问于 2019-12-02 07:01:32
回答 1查看 1.6K关注 0票数 1

我正在尝试从IBM的DB2仓库文档读取一个JSON响应。这要求我传递一个请求体,其中我必须提供useridpassword作为请求参数。

要使用spark.read.json阅读,我没有发现任何可以提供请求参数的内容。我们还能用它吗?

通常,我只使用scalaj-httpplay-json库使用Scala读取JSON,如下所示:

代码语言:javascript
复制
val body = Json.obj(Constants.KEY_USERID -> userid, Constants.KEY_PASSWORD -> password)

val response = Json.parse(Http(url + Constants.KEY_ENDPOINT_AUTH_TOKENS)
    .header(Constants.KEY_CONTENT_TYPE , "application/json") 
    .header(Constants.KEY_ACCEPT , "application/json")   
    .postData(body.toString())  
    .asString.body)  

我的要求是,我不能使用这两个库,必须使用scalaspark框架。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-04 16:17:29

不能直接使用spark.read.json来摄取REST数据。

首先,发出API调用请求以获取响应数据,然后将其转换为DataFrame。注意,如果您的API是分页的,那么您需要进行多次调用才能获取所有数据。

对于您的示例,需要调用身份验证端点才能获得Bearer token,然后将其添加到请求头中:

代码语言:javascript
复制
Authorization: Bearer <your_token>

所有这部分只能使用Scala (例如scala.io.Source.fromURL)来完成。

获得response_data后,使用spark将其转换为DF:

代码语言:javascript
复制
import spark.implicits._
val df = spark.read.json(Seq(response_data).toDS)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59134039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档