【问题标题】:Spark Scala issue火花斯卡拉问题
【发布时间】:2017-04-17 05:45:01
【问题描述】:

我在 rdd 文本文件中搜索一个单词“Scala”:

myRdd.map(line => if (line.split(" ").contain("Scala")) {("Scala", 1)}) 

工作正常。

但是:

val l = "Scala"
myRdd.map(line => if (line.split(" ").contain(l)) {(l, 1)}) 

不起作用,它会冻结程序而不会出错。

似乎是因为一个局部变量,但不知道为什么。

【问题讨论】:

标签: scala


【解决方案1】:

感谢贾斯珀-M,

final val lang_i 

工作得很好。但我很惊讶,至少从我所做的所有搜索中都没有更好地了解这一点。

事实上,我想做类似以下的事情(不确定语法),但它不起作用:

final val langs = List("Java", "Scala", "Python")
wikiRdd.flatMap(wa => langs.map(lang => if(wa.split(" ").contain(lang)) {(lang, 1)} ))

但 final 似乎不适用于列表。我会更仔细地查看提供的链接,但直接回答会大大减轻我的痛苦。

也为我的无知感到抱歉,但我也对“scala”答案感兴趣,因为我看不出我们如何在不通过 lambda 表达式传递变量的情况下重构或编写代码。我还在学习……但我很想知道如何解决这个列表示例。

非常感谢, 以兹

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2016-04-27
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多