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

标签 scala apache-spark hadoop

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

最佳答案

您不能直接使用具有相同列数的单个案例类创建两个 Dataframe。假设您有以下案例类 FlightData。如果您从这个案例类创建了一个 Dataframe,它将包含 3 列。但是,您可以创建两个 Dataframe,但在下一个 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)

关于scala - 如何使用相同的案例类创建多个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56123915/

相关文章:

sql - Liftweb - 使用映射器获取 SQL 表字段的最大值

java - AWT 队列线程中的调试异常

scala - 在 Spark Json 到 Csv 转换中?

hadoop - 如何使用HDInsight .NET SDK提交mahout推荐作业

hadoop - Hadoop NFS无法启动Hadoop NFS网关

hadoop - Docker 容器运行 Mesos 集群并在集群上运行其他 docker 容器(使用 Marathon)

scala - com.earldouglas#xsbt-web-plugin 在哪里发布?

Scala 宏 : finding Option's enclosed type

python - 如何将 python 包传递给 spark 作业并使用参数从包中调用主文件

apache-spark - 使用ALS进行训练时,Spark会给出StackOverflowError