我有一个需要采取以下步骤的火花流应用程序:
正如您所看到的,这意味着延迟激活计算,它会执行两次OUTSIDE操作。我试图避免缓存,因为每秒几百行这会杀死我的服务器 同时试图维持操作顺序,虽然这并不重要:有没有我不知道的解决方案?
编辑:我的节目截至目前:
kafkaStream;
lines = take the value, discard the topic;
lines.foreachRDD{
splittedRDD = arg.map { split the string };
assRDD = splittedRDD.map { associate to a table };
flaggedRDD = assRDD.map { add a boolean parameter under a if condition + send mail};
externalClass.saveStaticMethod( flaggedRDD.collect() and save in file);
enrichRDD = flaggedRDD.map { enrich with external data };
externalClass.saveStaticMethod( enrichRDD.collect() and save in file);
}
我把保存部分放在电子邮件之后,以便在出现问题时至少发送邮件。
答案 0 :(得分:0)
我找到的最后两种方法是:
.foreachRDD{ outside action }
。这没有重大缺点,因为在工作节点上只有一个RDD。{outside action}
并映射已发送的邮件:过滤邮件是否已发送。这几乎是一个多余的操作,因为它会过滤掉所有RDD元素。如果尝试不缓存,解决方案1是要走的路