系列主旨
建立可處理高速資料流的即時分析平台,支援數百萬筆事件/秒的規模。
📌 Part 1:資料管線設計
*目標
規劃資料進入、處理與儲存的完整流程。
*技術
Kafka, Spark Streaming, HDFS
*流程圖描述
資料來源 → Kafka Producer → Kafka Broker → Spark Streaming Consumer → HDFS
# 啟動 kafka broker
bin/kafka-server-start.sh config/server.properties
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='localhost:9092')
producer.send('topic1', b'hello world')
Part 2:串流處理與 ETL
*目標
用 Spark 處理即時資料,執行清理與轉換。
*技術pyspark
*流程圖描述
Kafka Consumer → Spark Streaming → DataFrame → ETL → Parquet
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("streaming").getOrCreate()
df = spark.readStream.format("kafka").option("subscribe", "topic1").load()
df.selectExpr("CAST(value AS STRING)").writeStream.format("parquet").start("/data/output")
Part 3:資料湖與倉儲
目標
將處理後資料儲存於資料湖並提供查詢。
*技術Delta Lake
, Hive
*流程圖描述
Parquet → Delta Lake → Hive Metastore → BI Query
df.write.format("delta").save("/delta/events")
spark.sql("CREATE TABLE events USING DELTA LOCATION '/delta/events'")
Part 4:監控視覺化
*目標
即時監控處理流程與系統負載。
*技術Grafana
, Prometheus
*流程圖描述
Spark Metrics → Prometheus Exporter → Grafana Dashboard
# prometheus.yml
scrape_configs:
- job_name: 'spark'
static_configs:
- targets: ['localhost:4040']
結論與效益
可即時處理高頻事件流,讓企業能快速反應市場變化。