[我们正在测试一种在优化时可提供出色并行性的驱动程序。 Trick是,它没有在Spark分区内并行化(在访问DB2中),因此要求我们告诉它我们想要多少并行线程,并且我们为每个线程抛出一个查询。虽然我希望在一个包含DataFrame对象数组的循环中执行此操作,但我无法弄清楚如何使用DataFrame对象数组编写scala。对于蛮力测试,我做了:
val DF1 = sqlContext.read.format("jdbc"). ...yada yada
val DF2 = sqlContext.read.format("jdbc"). ...yada yada
val DF3 = sqlContext.read.format("jdbc"). ...yada yada
val DF4 = sqlContext.read.format("jdbc"). ...yada yada
val unionDF=(((DF1.unionAll(DF2)).unionAll(DF3)).unionAll(DF4))
这非常适合并行化为4个分区。我宁愿在一个循环中这样做,但是看起来我似乎需要这样的东西:
var myDF = new Array [DataFrame](parallelBreakdown)...而DataFrame不是一个类型。关于这样做的任何想法都没有蛮力方法吗?谢谢,
答案 0 :(得分:0)
DataFrame确实是一种类型
import org.apache.spark.sql.DataFrame
我能够定义一个函数
def querier(dim_vals: Array[String]): = {
dim_vals.flatMap( dim_val =>
sql(MY_QUERY))
}
返回Array[DataFrame]
,我可以使用Robert Congiu的答案创建单个数据框,并在其上调用.show()
。