我有一个转换类,someFunction(Dataframe df),我想用另一个数据帧。但是当我尝试在转换期间访问它时,数据帧中的所有内容都为null(LogicalPlan和数据帧中的所有其他内容都为null)。有没有办法可以做到这一点?
编辑:
SparkStreamFlatMapFunction flatMap = new SparkStreamFlatMapFunction(DF);
JavaDStream<DataFrame> words = transaction.flatMap(flatMap);
StreamFlatMapFunction
public SparkStreamFlatMapFunction(DataFrame DF) {
this.DF = DF;
}
@Override
public Iterable<DataFrame> call(String arg0) throws Exception {
DF.show();
}
我得到空指针异常,因为DF中的所有值都为空。
答案 0 :(得分:1)
正如您所发现的,在Spark中,您无法在另一个RDD(或DataFrame)上的转换或操作中引用另一个RDD(或DataFrame)。支持这些类型操作的常规方法是将两个DataFrame连接在一起,或者如果两个DataFrame中的一个足够小,将数据收集到常规Java / Scala集合中,然后使用broadcast
(或跳过广播)并引用该集合。有时除了加入crossproducts之外,还可以用来达到理想的效果。既然你还没有准确发布你想要做的是什么,这是一个非常普遍的答案,但是看PairRDDFunctions
可能会让你对可能的解决方案有所了解。祝你的Spark冒险好运:))