spark 读 http 的 API 接口,将读出的JSON字符串,直接转成 DataFrame

    import spark.implicits._

    val jsonObject = new JSONObject()
    jsonObject.fluentPut("startTime", "2023-08-10 00:00:00")
    jsonObject.fluentPut("endTime", "2023-08-10 10:00:00")
    jsonObject.fluentPut("pageNum", 1)
    jsonObject.fluentPut("pageSize", 500)

    val requestJson = HttpUtils.postRequest(Props.get("your url"), jsonObject.toString())
    val requestData = JSON.parseObject(requestJson).getString("data")
    val ds: Dataset[String] = spark.createDataset(Seq(requestData))
    val dataFrame = spark.read.json(ds)

    dataFrame.show(false)



  /**
   *
   * @param url url地址
   * @param bodyData 传入json字符串
   * @return request
   */
  def postRequest(url: String,bodyData: String): String = {
    val httpClient = HttpClientBuilder.create().build()
    val httpPost = new HttpPost(url)
    httpPost.setHeader("Content-Type", "application/json;charset=utf-8")
    //设置超时时间
    httpPost.setConfig(RequestConfig
      .custom()
      .setConnectTimeout(5000)
      .setConnectionRequestTimeout(2000)
      .setSocketTimeout(20000)
      .build())

    val entity = new StringEntity(bodyData,"utf-8")

    //代码修改
    entity.setChunked(false)

    httpPost.setEntity(entity)

    var response: CloseableHttpResponse = null
    var request: String = ""

    //设置SSL

    try {
      response = httpClient.execute(httpPost)
      request = EntityUtils.toString(response.getEntity,"UTF-8")
    } finally {
      try {
        httpClient.close()
        response.close()
      } catch {
        case e: IOException =>
          e.printStackTrace()
      }
    }
    request
  }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值