apache-spark
Spark-Datenrahmen
Suche…
Einführung
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")