Suche…


Einführung

Ein DataFrame ist eine Abstraktion von Daten, die in Zeilen und typisierten Spalten organisiert sind. Sie ähnelt den Daten in relationalen SQL-basierten Datenbanken. Obwohl es in Spark 2.0 in nur einen Typalias für Dataset [Row] umgewandelt wurde, ist es immer noch weit verbreitet und nützlich für komplexe Verarbeitungspipelines, die seine Schemaflexibilität und SQL-basierte Operationen verwenden.

Erstellen von Datenrahmen in Scala

Es gibt viele Möglichkeiten, DataFrames zu erstellen. Sie können aus lokalen Listen, verteilten RDDs oder Lesen aus Datenquellen erstellt werden.

ToDF verwenden

Durch Importieren von Spark-SQL-Implikaten kann ein DataFrame aus einem lokalen Seq, Array oder RDD erstellt werden, sofern der Inhalt eines Product-Subtyps ist (Tupel und Fallklassen sind bekannte Beispiele für Product-Subtypen). Zum Beispiel:

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 verwenden

Eine andere Option ist die Verwendung der createDataFrame Methode in SQLcontext. Diese Option ermöglicht auch die Erstellung von Product-Subtypen aus lokalen Listen oder RDDs wie bei toDF . Die Namen der Spalten werden jedoch nicht in demselben Schritt festgelegt. Zum Beispiel:

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

Darüber hinaus ermöglicht dieser Ansatz Schaffung von RDDs von Row - Instanzen, solange ein schema Parameter zusammen für die Definition des resultierenden Datenrahmen Schemas übergeben wird. Beispiel:

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)

Lesen aus Quellen

Die häufigste Methode zum Erstellen von DataFrame besteht möglicherweise aus Datenquellen. Man kann es aus einer Parkettdatei in hdfs erstellen, zum Beispiel:

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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow