apache-spark
Spark DataFrame
Buscar..
Introducción
Creando DataFrames en Scala
Hay muchas formas de crear DataFrames. Se pueden crear a partir de listas locales, RDD distribuidos o leer de fuentes de datos.
Usando toDF
Al importar implícitos de spark sql, se puede crear un DataFrame desde un Seq, Array o RDD local, siempre que el contenido sea de un subtipo de Producto (las tuplas y las clases de casos son ejemplos bien conocidos de subtipos de Producto). Por ejemplo:
import sqlContext.implicits._
val df = Seq(
(1, "First Value", java.sql.Date.valueOf("2010-01-01")),
(2, "Second Value", java.sql.Date.valueOf("2010-02-01"))
).toDF("int_column", "string_column", "date_column")
Utilizando createDataFrame
Otra opción es usar el método createDataFrame
presente en SQLcontext. Esta opción también permite la creación desde listas locales o RDD de subtipos de productos como con toDF
, pero los nombres de las columnas no se configuran en el mismo paso. Por ejemplo:
val df1 = sqlContext.createDataFrame(Seq(
(1, "First Value", java.sql.Date.valueOf("2010-01-01")),
(2, "Second Value", java.sql.Date.valueOf("2010-02-01"))
))
Además, este enfoque permite la creación a partir de RDD de instancias de Row
, siempre que se pase un parámetro de schema
para la definición del esquema del marco de datos resultante. Ejemplo:
import org.apache.spark.sql.types._
val schema = StructType(List(
StructField("integer_column", IntegerType, nullable = false),
StructField("string_column", StringType, nullable = true),
StructField("date_column", DateType, nullable = true)
))
val rdd = sc.parallelize(Seq(
Row(1, "First Value", java.sql.Date.valueOf("2010-01-01")),
Row(2, "Second Value", java.sql.Date.valueOf("2010-02-01"))
))
val df = sqlContext.createDataFrame(rdd, schema)
Lectura de fuentes
Tal vez la forma más común de crear DataFrame es a partir de fuentes de datos. Uno puede crearlo a partir de un archivo de parquet en hdfs, por ejemplo:
val df = sqlContext.read.parquet("hdfs:/path/to/file")