首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spark中将java 8代码转换为Java 7代码

在spark中将java 8代码转换为Java 7代码
EN

Stack Overflow用户
提问于 2016-11-14 17:08:39
回答 2查看 180关注 0票数 1

我有以下使用spark和Java 8的代码。

代码语言:javascript
复制
JavaRDD<AdLog> accessLogs = logLines.map(adLog::parseFromLogLine).cache();

我正在尝试将其转换为Java 7。我为大多数代码找到了替代方法,但我找不到适用于这行代码的替代方法。parseFromLogLine是类AdLog中的一个方法,adLog是该类的一个对象。当遇到一行文本时,它应该调用AdLog类中的parseFromLogLine方法。该方法返回一个新的AdLog对象。我如何使用Java7来实现这一点。任何帮助都将不胜感激。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-11-14 17:21:16

您可以使用Guava函数来帮助您解决此问题。(https://google.github.io/guava/releases/19.0/api/docs/com/google/common/base/Functions.html)

在一个新类中定义它,使用AdLog对象作为输入和AdLog作为结果(Function<AdLog, AdLog>)进行初始化,然后实现apply方法,该方法将Adlog对象作为输入,并返回一个Adlog对象。在apply方法中,调用parseFromLogLine()。

代码语言:javascript
复制
public class AdLogFunction implements Function<AdLog, AdLog> {

    @Override
    public AdLog apply(AdLog input) {
        return input.parseFromLogLine();
    }
}

完成这个类之后,您就可以在代码中轻松地使用它了

票数 0
EN

Stack Overflow用户

发布于 2019-06-12 19:39:44

如果logLines RDD的类型为AdLog,则

代码语言:javascript
复制
 logLines.map(new Function<AdLog, AdLog>() {
        @Override
        public AdLog call(AdLog adlog) throws Exception {

            return adLog.parseFromLogLine();
        });

spark中的Java 7方式。

map方法的参数是函数类型,在Java7中可以像下面这样传递(匿名内部类)。

代码语言:javascript
复制
rdd.map(new Function<InputType, ReturnType>() {
    @Override
    public ReturnType call(InputType s) throws Exception {
            .......
        return op;
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40585098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档