Wie passend Dataframe Spaltennamen Scala Fall Attribute der Klasse?

Den Namen der Spalten in diesem Beispiel aus der spark-sql-kommen aus der case class Person.

case class Person(name: String, age: Int)

val people: RDD[Person] = ... //An RDD of case class objects, from the previous example.

//The RDD is implicitly converted to a SchemaRDD by createSchemaRDD, allowing it to be stored using Parquet.
people.saveAsParquetFile("people.parquet")

https://spark.apache.org/docs/1.1.0/sql-programming-guide.html

Jedoch in vielen Fällen die Namen der parameter geändert werden kann. Dies würde bewirken, dass die Spalten nicht gefunden werden, wenn die Datei wurde nicht aktualisiert, um die änderung widerzuspiegeln.

Wie kann ich festlegen, ein entsprechendes mapping?

Ich denke so etwas wie:

  val schema = StructType(Seq(
    StructField("name", StringType, nullable = false),
    StructField("age", IntegerType, nullable = false)
  ))


  val ps: Seq[Person] = ???

  val personRDD = sc.parallelize(ps)

  //Apply the schema to the RDD.
  val personDF: DataFrame = sqlContext.createDataFrame(personRDD, schema)
  • Es ist leider nicht klar, was Sie wollen. 1. Schreiben Parkett mit beliebigen Namen? 2. Ändern Sie die Parkett-Spaltennamen danach? 3. Lesen Sie ein Parkett mit beliebigen Spaltennamen und "match"/Karte zum Gebiet der case-Klasse?
  • Wie so? Ich möchte die set Spalte-Namen manuell und map case class params, um diese Spalten.
  • Aber Sie Absicht zu haben, Ihnen automatisch abgeglichen?
  • bitte erweitern Sie auf, dass. Wie ich sagte, ich will Spiel manuell.
InformationsquelleAutor BAR | 2015-09-12
Schreibe einen Kommentar