【发布时间】:2017-05-21 01:12:57
【问题描述】:
根据DataFrames API,定义为:
public void foreach(scala.Function1<Row,scala.runtime.BoxedUnit> f)
将函数 f 应用于所有行。
但是当我想尝试的时候
Dataframe df = sql.read()
.format("com.databricks.spark.csv")
.option("header","true")
.load("file:///home/hadoop/Desktop/examples.csv");
df.foreach(x->
{
System.out.println(x);
});
我收到编译时错误。有错吗?
【问题讨论】:
-
我投了反对票,因为您需要将错误消息添加到问题中。
-
出于多种原因,我对这个问题投了反对票。首先,错误消息不可用,因此它属于我的代码无法正常工作的类别。其次,用于
foreach打印输出。三是因为有错别字。DataFrame是一个大 F !我也投票结束这个问题。 -
我赞成这个问题,因为我最终遇到了同样的问题。编译有两个问题: 1. 参数
Function1<Row, BoxedUnit>好像不适合Java lambdas 2. 如果参数是df.foreach(new AbstractFunction1<Row, BoxedUnit>() { @Override public BoxedUnit apply(Row arg0) { return null; } });, 就可以了。 -
第二个错误是DataFrame类型中的foreach(Function1
)方法不适用于参数((Row x) -> {})
(或 ((Row x, BoxedUnit b) -> {}))
标签: java hadoop apache-spark dataframe spark-dataframe