Structed Streaming 小案例

简介: 1 首先是官网:http://spark.apache.org/docs/latest/structured-streaming-programming-guide.ht2.注意官方文档中的着重表示的地方例如(黑体加重,斜体等) 我们都知道spark streaming 是基于spark core API 那Structed Streaming基于的是什么? 没错就是Spark SQL。

1 首先是官网:

http://spark.apache.org/docs/latest/structured-streaming-programming-guide.ht

2.注意官方文档中的着重表示的地方例如(黑体加重,斜体等)
我们都知道spark streaming 是基于spark core API
那Structed Streaming基于的是什么?

        没错就是Spark SQL。 所以DataFrame/DataSet API 包括hive的一些functions 不要太好用哦!!!

下面这句话:“you can express your streaming computaion the same way
you would express a batch computation on a static data”
就保证了我们在实际开发时的成本比较低,当我们在开发一个的应用中包含流计算和批计算。

3.特点:

可扩展性,容错性(这都是必备的好吗?)
精确的一次语义
低延迟

4.关键点:

Continuously processing

databricks的blog上这篇文章写的也很好 https://databricks.com/blog/2016/07/28/continuous-applications-evolving-streaming-in-apache-spark-2-0.html

5.做到了端到端

延时1ms时能保证至at least one 的语义
延时100ms左右时,能做到 exactly once。

6.然后就是流与其他的各种join, watermark的引入,总之和flink 相互发展促进。

Finally:最后贴一个小的 案例:

    object testSSApp extends App {

  val spark: SparkSession = SparkSession.builder().appName("baidu").master("local[2]").getOrCreate()

  //  结构化流
  private val read = spark.readStream.format("kafka")
    .option("kafka.bootstrap.servers", "host1:port1,host2:port2")
    .option("subscribe", "topic1")
    .option("maxOffsetperTrigger", "1000000")
    .option("kafkaConsumer.pollTimeoutMs", "1000")
    .load()

//读取的kafak 数据为json格式

  val result = read.selectExpr("CAST(value AS STRING)")
    .select(
      get_json_object(col("value"), path = "$.uri").alias("uri"),
      get_json_object(col("value"), path = "$.market").alias("market")
    ).groupBy(window(col("timestamp"),"5min","1min"),
    col("shop"))
    .agg(count("market").alias("uv"),
      approx_count_distinct("uri").alias("pv")).select("*")

  val query = result.writeStream.trigger(Trigger.ProcessingTime(10000)).outputMode("Update")
    .format("console").start()

//这里展示以console输出,实际中是回写到kafak或者外部存储。

  query.awaitTermination()

}
相关文章
|
3月前
|
消息中间件 Kafka 数据处理
Apache Flink:流式数据处理的强大引擎
【6月更文挑战第8天】Apache Flink是开源的流处理框架,专注于高效、低延迟的无界和有界数据流处理。它提供统一编程模型,支持实时与批量数据。核心概念包括DataStreams、DataSets、时间语义和窗口操作。使用Flink涉及环境设置、数据源配置(如Kafka)、数据转换(如map、filter)、窗口聚合及数据输出。通过丰富API和灵活时间语义,Flink适于构建复杂流处理应用,在实时数据处理领域具有广阔前景。
|
4月前
|
存储 分布式计算 Spark
实战|使用Spark Streaming写入Hudi
实战|使用Spark Streaming写入Hudi
249 0
|
4月前
|
分布式计算 监控 数据处理
实时数据处理概述与Spark Streaming简介
实时数据处理概述与Spark Streaming简介
|
消息中间件 SQL 分布式计算
Spark Streaming实时计算框架
Spark Streaming实时计算框架
Spark Streaming实时计算框架
|
消息中间件 分布式计算 Kafka
Spark Streaming实时流处理项目实战笔记——使用KafkaSInk将Flume收集到的数据输出到Kafka
Spark Streaming实时流处理项目实战笔记——使用KafkaSInk将Flume收集到的数据输出到Kafka
|
存储 缓存 分布式计算
《基于Apache Flink的流处理》读书笔记
前段时间详细地阅读了 **《Apache Flink的流处理》** 这本书,作者是 Fabian Hueske&Vasiliki Kalavri,国内崔星灿翻译的,这本书非常详细、全面得介绍了Flink流处理,并且以气象数据的例子讲解其中的使用,我把其中一些比较重要的句子做了比较,并且分享给大家。有一些我不是很理解,需要以后慢慢去消化,我就不做详细的展开。
《基于Apache Flink的流处理》读书笔记
|
存储 消息中间件 分布式计算
Spark Streaming 快速入门(理论)
Spark Streaming 快速入门(理论)
226 0
Spark Streaming 快速入门(理论)
|
消息中间件 存储 分布式计算
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!1
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!1
246 0
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!1
|
消息中间件 jstorm 分布式计算
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!2
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!2
447 0
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!2
|
消息中间件 存储 资源调度
Flink实战(八) - Streaming Connectors 编程(下)
Flink实战(八) - Streaming Connectors 编程(下)
288 0
Flink实战(八) - Streaming Connectors 编程(下)