Spark Streaming实时处理

时间:2015-07-06 15:50:43

标签: apache-spark streaming

我需要一个能够实现员工之间沟通的应用程序。让我们说工人1正在处理工作1,它将生成其他工作依赖的数据输出。此外,此过程应重复多次,这意味着每当工人1生成新数据集时,其他工作人员应开始输入此数据集并完成其工作。火花能做到吗?到目前为止,我已经看到火花流实时处理,但流媒体通信似乎不发生在工人之间?任何方向或建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

您必须在一个单一的Spark Streaming Job中一个接一个地定义所需的操作。

虽然我没有尝试过,但你也可以尝试使用像Oozie这样的工作流组件来配置你的标准Spark Ba​​tch作业(非流媒体)。

最近,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();




    }
}