Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark DataFrame.flatMap在java中的使用_Java_Apache Spark_Flatmap - Fatal编程技术网

Spark DataFrame.flatMap在java中的使用

Spark DataFrame.flatMap在java中的使用,java,apache-spark,flatmap,Java,Apache Spark,Flatmap,我在java中使用过RDD.flatMap函数。现在我正在尝试数据帧 他们说: public <R> RDD<R> flatMap(scala.Function1<org.apache.spark.sql.Row, scala.collection.TraversableOnce<R>> f, scala.reflect.ClassTag<R> evidence$4) 这看起来很奇怪,但我继续制作证据$4: ClassTag&

我在java中使用过RDD.flatMap函数。现在我正在尝试数据帧

他们说:

public <R> RDD<R> flatMap(scala.Function1<org.apache.spark.sql.Row,
    scala.collection.TraversableOnce<R>> f, scala.reflect.ClassTag<R> evidence$4)
这看起来很奇怪,但我继续制作
证据$4

ClassTag<Row> evidence$4 = scala.reflect.ClassTag$.MODULE$.apply(Row.class);
但是,我应该如何从
获得
可遍历一次

还有,我尝试的方法正确吗?还是我遗漏了什么


我正在使用Apache Spark 1.3.1

您应该执行以下操作:

RDD res=df.flatMap(新的AbstractFunction1(){
公共可遍历一次应用(行){
return new ListSet().$plus(row);//注意更新的列表是从$plus()返回的
}
}证据(4元),;
这将类似于
map
,只是有更多的更改自由。例如,要筛选出内容,可以在希望返回空的
new ListSet()
时返回它,或者保持当前的行为<代码>平面图
非常灵活


(从Java集合到Scala集合的转换似乎并不简单。)

首先,您应该在函数中使用。您也可以使用从Java集合创建
TraversableOnce
。请删除“spark Java”标记,它与Apache spark无关。在我看来,DataFrame=RDD+Schema。如果是这样的话,基本上我们应该做的是newDF=DF.RDD.flatmap(f.applySchema(),而不必费心重新发明轮子。是这样吗??引擎盖下面没有零钱吗?性能会一样吗?@gábor bakos,尝试了与您答案完全相同的代码。它显示编译错误,并要求我“将强制转换添加到‘TraversableOnce’”。尝试了该操作,但得到了异常“java.lang.ClassCastException:scala.collection.convert.Decorators$AsScala无法强制转换为scala.collection.TraversableOnce”。在这种情况下,让我们添加一个
toList()
。我在哪里添加
toList()
?(很抱歉,这个scala-java的东西让人困惑)。你能把更新后的代码贴出来吗?还有什么是“证据4美元”?它有什么作用?我的编造方式正确吗?有关于Spark DF java API的很好的文档和示例吗?
ClassTag<Row> evidence$4 = scala.reflect.ClassTag$.MODULE$.apply(Row.class);
    @Override
    public TraversableOnce<Row> apply(Row arg0) {
        // TODO Auto-generated method stub
        return null;
    }