Zoeken…


Invoering

Een DataFrame is een abstractie van gegevens georganiseerd in rijen en getypte kolommen. Het is vergelijkbaar met de gegevens in relationele SQL-gebaseerde databases. Hoewel het is omgezet in slechts een type-alias voor Dataset [Rij] in Spark 2.0, wordt het nog steeds veel gebruikt en nuttig voor complexe verwerkingspijplijnen die gebruik maken van zijn schemaflexibiliteit en SQL-gebaseerde bewerkingen.

Dataframes maken in Scala

Er zijn veel manieren om DataFrames te maken. Ze kunnen worden gemaakt op basis van lokale lijsten, gedistribueerde RDD's of lezen uit gegevensbronnen.

ToDF gebruiken

Door implicaties van spark sql te importeren, kan men een DataFrame maken van een lokale Seq, Array of RDD, zolang de inhoud van een Product-subtype is (tupels en case-klassen zijn bekende voorbeelden van Product-subtypen). Bijvoorbeeld:

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

CreateDataFrame gebruiken

Een andere optie is het gebruik van de methode createDataFrame die aanwezig is in SQLcontext. Met deze optie kunt u ook vanuit lokale lijsten of RDD's van productsubtypen maken zoals met toDF , maar de namen van de kolommen worden niet in dezelfde stap ingesteld. Bijvoorbeeld:

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

Bovendien maakt deze benadering het mogelijk om vanuit RDD's van Row instanties te maken, zolang een schema wordt doorgegeven voor de definitie van het resulterende schema van het DataFrame. Voorbeeld:

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)

Lezen uit bronnen

Misschien is de meest gebruikelijke manier om DataFrame te maken vanuit gegevensbronnen. Je kunt het maken van een parketbestand in hdf's, bijvoorbeeld:

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow