1 votos

Spark Leer JSON con Parámetros de Solicitud

Estoy tratando de leer una respuesta JSON de la documentación de DB2 Warehouse en la nube de IBM Cloud. Esto me requiere pasar un cuerpo de solicitud en el cual debo proporcionar userid y password como parámetros de solicitud.

Para leer usando spark.read.json, no encontré nada en donde se pudieran proporcionar los parámetros de solicitud. ¿Hay alguna forma en la que podríamos hacerlo?

Normalmente leería el JSON usando solo Scala utilizando las librerías scalaj-http y play-json como:

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)  

Mi requisito es que no puedo usar estas 2 librerías y tengo que hacerlo usando scala con el framework spark.

1voto

blackbishop Puntos 8381

No puedes usar spark.read.json directamente para la ingestión de datos de una API REST.

Primero, haz tu llamada a la API para obtener la respuesta de los datos y luego conviértela en un DataFrame con Spark. Ten en cuenta que si tu API está paginada, necesitarás hacer múltiples llamadas para obtener todos los datos.

Para tu ejemplo, necesitas llamar al punto de autenticación para obtener un token de Bearer y luego agregarlo al encabezado de la solicitud :

Authorization: Bearer 

Toda esta parte se puede hacer usando solo Scala (por ejemplo scala.io.Source.fromURL).

Una vez que tengas los datos_de_respuesta, usa spark para convertirlos en un DF :

import spark.implicits._
val df = spark.read.json(Seq(datos_de_respuesta).toDS)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X