繁体   English   中英

从 scala 中同一表的列中循环 dataframe

[英]Looping a dataframe from the column from the same table in scala

我有 DataFrame ,其中将包含表名和数据。 我需要使用表列名称循环 DataFrame。 一开始有没有更好的方法来收集?

val tablename:Array[String] = df1.select("msgname").distinct().rdd.map(row=>row.getString(0).trim).collect

tablename.foreach{table =>
  //print(table)
  //val columns:Array[String] = df1.filter(s"msgname = '$table'").select("columns").distinct().rdd.map(row=>row.toString()).collect
  df1.filter(s"msgname = '$table'").select("record_data").write.saveAsTable(s"$table")
    //.toDF(columns:_*).show()
    //.toDF(columns:_*).show()
}

提高性能的 2 个想法:缓存 df1 和/或触发并行 spark 作业,例如使用并行 collections,如下所示:

df1.cache()    
val tablename:Array[String] = df1.select(trim("msgname")).distinct().as[String].collect

tablename
.par // enable parallel execution
.foreach{table =>
     df1.filter(s"msgname ='$table'").select("record_data").write.saveAsTable(s"$table")
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM