首页 > 解决方案 > Spark中的scala匿名函数中的代码块是什么意思?

问题描述

我是 scala 的新手,不明白代码块在匿名函数中的含义。这是一些示例代码:

def makeIndex(langs: List[String], rdd: RDD[WikipediaArticle]): RDD[(String, Iterable[WikipediaArticle])] = {
    val articles_Languages = rdd.flatMap(article => {
        langs.filter(lang => article.mentionsLanguage(lang))
                                    .map(lang => (lang, article))
    })
    articles_Languages.groupByKey
}

这是否意味着一个WikipediaArticle对象从其原始转换为一个元组列表(lang,article),然后展平,并通过调用 groupByKey 将其转换为RDD[(String, Iterable[WikipediaArticle])]

这是否意味着{}只要块内的最后一行返回我想要的对象,我就可以在块内编写任何代码?以这种方式迭代langs每篇文章的示例代码?

标签: scalaapache-spark

解决方案


map并且flatMap高阶函数,它们接收一个函数作为参数,您可以通过多种方式调用它们。()您可以只传递一个您定义的方法,如果它只有一行,则可以在其中传递一个匿名函数,或者{}如果您需要更多行代码,则可以在内部传递。

是的,如果你遵循所需的签名,你可以传递任何你想要的东西,这意味着输入和输出必须与签名匹配。

如果map您有签名A => B,则可以将您的签名转换A为您想要的任何东西


推荐阅读