如何使用相同的案例类创建多个数据框?假设我要创建多个具有5列的数据框,而另一个具有3列的数据框,我将如何使用单个case类实现这一点?
答案 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)