我对 Structured Streaming 和 Delta Live Tables 之间的区别感兴趣。 Databricks 说
For most streaming or incremental data processing or ETL tasks, Databricks recommends Delta Live Tables
.
这是否意味着我应该始终坚持 DLT,而结构化流是一个老功能?
TL;DR - DLT = SaaS Structured Streaming,使流式传输变得简单,但需要付出一定的代价($$)。
分布式账本技术
/path/to/json/file/streams/taxi_raw
的 json 文件流式传输到 /path/to/delta/tables/filtered_data
:df_taxi_raw = spark.readStream.json('/databricks-datasets/nyctaxi/sample/json/')
df_taxi_raw.writeStream.format('delta').start('/path/to/delta/tables/taxi_raw')
df_filtered_data = spark.readStream.format("delta").load("/path/to/delta/tables/taxi_raw").where(...)
df_filtered_data.writeStream.format('delta').start('/path/to/delta/tables/filtered_data')
使用分布式账本技术同样的事情:
import dlt
@dlt.view
def taxi_raw():
return spark.read.format("json").load("/path/to/json/file/streams/taxi_raw")
@dlt.table(name="filtered_data")
def create_filtered_data():
return dlt.read("taxi_raw").where(...)
这是否意味着我应该始终坚持 DLT,而结构化流是一个老功能?
“Databricks 推荐”是因为他们从事赚钱的业务,而不是因为 DLT 是替代旧功能的“新功能”。更像是沃尔玛推荐“Walmart+”,虽然不一定要到沃尔玛购物
例如
RDD
被 DataFrame
取代,未来新功能将添加到 DataFrame
而不是 RDD
。但 DLT 和结构化流媒体并非如此。 Structured Streaming 由 Apache 开发,并将继续下去。
了解成本和收益,然后再做决定。您可以使用 DLT 或股票 Spark Structured Streaming 进行流式传输。