我有一些自定义逻辑,用于查看RDD中的元素,并希望使用UNION(
SELECTCOLUMNS(Targets, "Segement", Targets[Segment], "Qtr", "Q1", "Target", Targets[Q1]),
SELECTCOLUMNS(Targets, "Segement", Targets[Segment], "Qtr", "Q2", "Target", Targets[Q2]),
SELECTCOLUMNS(Targets, "Segement", Targets[Segment], "Qtr", "Q3", "Target", Targets[Q3]),
SELECTCOLUMNS(Targets, "Segement", Targets[Segment], "Qtr", "Q4", "Target", Targets[Q4]))
通过UNION方法有条件地写入TempView,如下所示:
foreach
我没有得到的基本内容:
我得到了所有基于集合的案例,但是为了简单起见,我想在立即满足条件时追加。即在RDD中的项目条目级别。
现在,在获得-1作为SO 41356419之前,我只是建议这个因为我有一个特定的用例并且在SPARK SQL中改变TempView,我确实需要这样的方法 - 至少这是我的想法。不是典型的SPARK使用案例,但这就是我们/我所面临的情况。
提前致谢
答案 0 :(得分:0)
首先 - 您无法在另一个RDD或DF / DS功能的foreach()
内创建RDD或DF。但是你可以从RDD获得第n个元素并使用该单个元素创建新的RDD。
编辑: 然而,解决方案要简单得多:
import org.apache.spark.{SparkConf, SparkContext}
object Main {
val conf = new SparkConf().setAppName("myapp").setMaster("local[*]")
val sc = new SparkContext(conf)
def main(args: Array[String]): Unit = {
val n = 534 // This is input value (index of the element we'ŗe interested in)
sc.setLogLevel("ERROR")
// Creating dummy rdd
val rdd = sc.parallelize(0 to 999).cache()
val singletonRdd = rdd.zipWithIndex().filter(pair => pair._1 == n)
}
}
希望有所帮助!