Sök…


Introduktion

En DataFrame är en abstraktion av data organiserade i rader och skrivna kolumner. Det liknar de data som finns i relationella SQL-baserade databaser. Även om det har förvandlats till bara ett typalias för Dataset [Row] i Spark 2.0, är det fortfarande allmänt använt och användbart för komplexa processrörledningar som använder sin schemaflexibilitet och SQL-baserade operationer.

Skapa DataFrames i Scala

Det finns många sätt att skapa DataFrames. De kan skapas från lokala listor, distribuerade RDD: er eller läsning från datakällor.

Med toDF

Genom att importera gnist-sql-implikationer kan man skapa en DataFrame från en lokal Seq, Array eller RDD, så länge innehållet är av en produktundertyp (tuples och case-klasser är välkända exempel på produktsubtyper). Till exempel:

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")

Använda createDataFrame

Ett annat alternativ är att använda metoden createDataFrame som finns i SQLcontext. Det här alternativet tillåter också skapandet från lokala listor eller RDD: er av produktundertyper som med toDF , men namnen på kolumnerna är inte inställda i samma steg. Till exempel:

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"))
))

Dessutom tillåter detta tillvägagångssätt skapande från RDD: er av Row instanser, så länge en schema passeras för att definiera det resulterande DataFrames schema. Exempel:

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)

Läsning från källor

Kanske är det vanligaste sättet att skapa DataFrame från datakällor. Man kan skapa den från en parkettfil i hdfs, till exempel:

val df = sqlContext.read.parquet("hdfs:/path/to/file")


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow