Saltar al contenido

Spark SQL: cómo consumir datos json de un servicio REST como DataFrame

Solución:

En Spark 1.6:

Si está en Python, use la biblioteca de solicitudes para obtener la información y luego simplemente cree un RDD a partir de ella. Debe haber alguna biblioteca similar para Scala (hilo relevante). Entonces solo haz:

json_str="{"executorCores": 2, "kind": "pyspark", "driverMemory": 1000}"
rdd = sc.parallelize([json_str])
json_df = sqlContext.jsonRDD(rdd)
json_df

Código para Scala:

val anotherPeopleRDD = sc.parallelize(
  """{"name":"Yin","address":{"city":"Columbus","state":"Ohio"}}""" :: Nil)
val anotherPeople = sqlContext.read.json(anotherPeopleRDD)

Esto es de: http://spark.apache.org/docs/latest/sql-programming-guide.html#json-datasets

Spark no puede analizar un json arbitrario en un marco de datos, porque json es una estructura jerárquica y el marco de datos es plano. Si su json no es creado por Spark, lo más probable es que no cumpla con la condición “Cada línea debe contener un objeto JSON válido independiente e independiente” y, por lo tanto, deberá analizarse con su código personalizado y luego alimentar al marco de datos como colección de objetos de clase case o Spark sql Rows.

Puedes descargar como:

import scalaj.http._
val response = Http("proto:///path/to/json")
  .header("key", "val").method("get")
  .execute().asString.body

y luego analice su json como se muestra en esta respuesta. Y luego cree una secuencia de objetos de su clase de caso (digamos seq) y cree un marco de datos como

seq.toDF
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *