我需要一个能够实现员工之间沟通的应用程序。让我们说工人1正在处理工作1,它将生成其他工作依赖的数据输出。此外,此过程应重复多次,这意味着每当工人1生成新数据集时,其他工作人员应开始输入此数据集并完成其工作。火花能做到吗?到目前为止,我已经看到火花流实时处理,但流媒体通信似乎不发生在工人之间?任何方向或建议将不胜感激。
答案 0 :(得分:0)
您必须在一个单一的Spark Streaming Job中一个接一个地定义所需的操作。
虽然我没有尝试过,但你也可以尝试使用像Oozie这样的工作流组件来配置你的标准Spark Batch作业(非流媒体)。
最近,Spring XD还引入了与Spark Jobs的集成。这也可能有效 - http://www.slideshare.net/mark_fisher/spark-meets-spring。
答案 1 :(得分:-1)
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.streaming.StreamingQuery;
import org.apache.spark.sql.streaming.StreamingQueryException;
import org.apache.spark.sql.types.StructType;
import org.json4s.jackson.Json;
public class lotWeather {
public static void main(String[] args) throws StreamingQueryException {
System.setProperty("hadoop.home.dir", "C:\\hadoop-common-2.2.0-bin-master");
SparkSession sparkSession = SparkSession.builder().appName("SparkStreamingMessageListener").master("local").getOrCreate();
enter code here
StructType weatherType= new StructType().add("quarter","String").add("heatType", "string").add("heat","integer")
.add("windType","string").add("wind","integer");
Dataset<Row> rawData = sparkSession.readStream().schema(weatherType).option("sep", ",")
.csv("C:\\Users\\sorun\\OneDrive\\Masaüstü\\bigdata\\sparkstreaming\\*");
Dataset<Row> heatData = rawData.select("quarter", "heat").where("heat>29");
StreamingQuery start = heatData.writeStream().outputMode("append").format("console").start();
start.awaitTermination();
}
}