我想在EMR火花星团上设置一系列火花步骤,如果花费太长时间,则终止当前步骤.但是,当我进入主节点并运行hadoop jobs -list时,主节点似乎认为没有正在运行的作业.我不想终止群集,因为这样做会迫使我购买我正在运行的任何群集的全新时间.任何人都可以帮我终止EMR的火花步骤而不终止整个群集吗?
所以我遇到了一个问题,我在RDD上使用的过滤器可能会创建一个空的RDD.我觉得为了测试空虚而做一个count()会非常昂贵,并且想知道是否有更高效的方法来处理这种情况.
以下是此问题的示例:
val b:RDD[String] = sc.parallelize(Seq("a","ab","abc"))
println(b.filter(a => !a.contains("a")).reduce(_+_))
Run Code Online (Sandbox Code Playgroud)
会给出结果
empty collection
java.lang.UnsupportedOperationException: empty collection
at org.apache.spark.rdd.RDD$$anonfun$reduce$1$$anonfun$apply$36.apply(RDD.scala:1005)
at org.apache.spark.rdd.RDD$$anonfun$reduce$1$$anonfun$apply$36.apply(RDD.scala:1005)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD$$anonfun$reduce$1.apply(RDD.scala:1005)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:147)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108)
at org.apache.spark.rdd.RDD.withScope(RDD.scala:306)
at org.apache.spark.rdd.RDD.reduce(RDD.scala:985)
Run Code Online (Sandbox Code Playgroud)
有没有人对如何解决这个边缘案件有任何建议?
我试图通过将文档剪切成句子来进行分类,然后将句子中的每个单词进行逻辑回归以进行逻辑回归.但是,我发现stanford的注释类在我的火花工作中造成了严重的瓶颈(它需要20分钟才能处理500k文件)
这是我目前用于句子解析和分类的代码
句子解析:
def prepSentences(text: String): List[CoreMap] = {
val mod = text.replace("Sr.", "Sr") // deals with an edge case
val doc = new Annotation(mod)
pipeHolder.get.annotate(doc)
val sentences = doc.get(classOf[SentencesAnnotation]).toList
sentences
}
Run Code Online (Sandbox Code Playgroud)
然后,我将采用每个coremap并按如下方式处理引理
def coreMapToLemmas(map:CoreMap):Seq[String] = {
map.get(classOf[TokensAnnotation]).par.foldLeft(Seq[String]())(
(a, b) => {
val lemma = b.get(classOf[LemmaAnnotation])
if (!(stopWords.contains(b.lemma().toLowerCase) || puncWords.contains(b.originalText())))
a :+ lemma.toLowerCase
else a
}
)
}
Run Code Online (Sandbox Code Playgroud)
也许有一个类只涉及一些处理?