apache-spark                
            Spark DataFrame
        
        
            
    Recherche…
Introduction
Création de DataFrames dans Scala
Il existe plusieurs façons de créer des DataFrames. Ils peuvent être créés à partir de listes locales, de RDD distribués ou de lectures à partir de sources de données.
Utiliser toDF
En important les implicits spark sql, on peut créer un DataFrame à partir d'un Seq, Array ou RDD local, tant que le contenu est d'un sous-type Product (tuples et classes de cas sont des exemples bien connus de sous-types Product). Par exemple:
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")
Utiliser createDataFrame
 Une autre option consiste à utiliser la méthode createDataFrame présente dans SQLcontext. Cette option permet également la création à partir de listes locales ou de RDD de sous-types de produits comme avec toDF , mais les noms des colonnes ne sont pas définis dans la même étape. Par exemple: 
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"))
))
 En outre, cette approche permet la création de fichiers RDD d'instances de Row , à condition qu'un paramètre de schema soit transmis pour la définition du schéma de DataFrame résultant. Exemple: 
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)
Lecture de sources
Le moyen le plus courant de créer DataFrame provient peut-être des sources de données. On peut le créer à partir d'un fichier parquet en hdfs, par exemple:
val df = sqlContext.read.parquet("hdfs:/path/to/file")