Comment faire correspondre Dataframe noms de colonne à la Scala cas des attributs de classe?

Les noms de colonne dans cet exemple, à partir de l'étincelle-sql viennent de la 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

Cependant, dans de nombreux cas, les noms des paramètres peuvent être modifiés. Ceci pourrait causer des colonnes pour ne pas être repéré si le fichier n'a pas été mis à jour pour refléter le changement.

Comment puis-je spécifier une cartographie appropriée?

Je pense à quelque chose comme:

  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)
Malheureusement, il n'est pas clair ce que vous voulez. 1. Écrire avec parquet et arbitraire des noms? 2. Changer le parquet des noms de colonne par la suite? 3. Lire un parquet arbitraire des noms de colonne et de "correspondance"/carte jusqu'au champ de classe de cas?
Comment alors? Je veux mettre des noms de colonne manuellement et la carte de la classe de cas params dans ces colonnes.
Mais vous l'intention d'avoir leur correspondent automatiquement?
veuillez étendre sur ce point. Comme je l'ai dit je veux correspondre manuellement.

OriginalL'auteur BAR | 2015-09-12

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *