如何使用相同的案例类创建多个数据框

时间:2019-05-14 06:02:54

标签: scala apache-spark hadoop

如何使用相同的案例类创建多个数据框?假设我要创建多个具有5列的数据框,而另一个具有3列的数据框,我将如何使用单个case类实现这一点?

1 个答案:

答案 0 :(得分:2)

您不能直接使用具有相同列数的单个案例类创建两个数据框。假设您具有以下案例类FlightData。如果从此案例类创建了一个数据框,它将包含3列。但是,您可以创建两个Dataframe,但是在下一个中,您可以从此案例类中选择一些列。如果您有两个不同的文件,并且每个文件包含不同的结构,则需要创建两个单独的案例类。

   val someData = Seq(
    Row("United States", "Romania", 15),
    Row("United States", "Croatia", 1),
    Row("United States", "Ireland", 344),
    Row("Egypt", "United States", 15)
  )


  val flightDataSchema = List(
    StructField("DEST_COUNTRY_NAME", StringType, true),
    StructField("ORIGIN_COUNTRY_NAME", StringType, true),
    StructField("count", IntegerType, true)
  )

  case class FlightData(DEST_COUNTRY_NAME: String, ORIGIN_COUNTRY_NAME: String, count: Int)
  import spark.implicits._

  val dataDS = spark.createDataFrame(
    spark.sparkContext.parallelize(someData),
    StructType(flightDataSchema)
  ).as[FlightData]

  val dataDS_2 = spark.createDataFrame(
    spark.sparkContext.parallelize(someData),
    StructType(flightDataSchema)
  ).as[FlightData].select('DEST_COUNTRY_NAME)