Databricks DLT SQL中stream与readStream函数解析及使用疑问
Databricks Delta Live Table SQL中
stream()与readStream()的说明 核心关系
- SQL中的
readStream()和Python/Scala里的spark.readStream完全对应,都是用来定义流式数据源读取,构建增量处理的DLT管道。 stream()是readStream()的简化别名,二者功能完全一致,没有任何差异,只是写法更简洁。
SQL用法与参数
在DLT的SQL语法中,这两个函数用来包裹数据源路径或表名,声明以流式方式读取:
- 读取外部流式数据源(如云存储文件流):
CREATE STREAMING LIVE TABLE raw_data AS SELECT * FROM stream('/path/to/streaming/source'); -- 与下面写法等价 CREATE STREAMING LIVE TABLE raw_data AS SELECT * FROM readStream('/path/to/streaming/source');
- 读取DLT内部的流式上游表:
CREATE STREAMING LIVE TABLE cleaned_data AS SELECT id, trim(name) AS name FROM stream(LIVE.raw_data);
参数可以通过OPTIONS子句传递,对应Spark结构化流的配置项,比如文件格式、触发规则等:
CREATE STREAMING LIVE TABLE raw_json_data AS SELECT * FROM stream('/path/to/json/stream') OPTIONS ( format = 'json', inferSchema = 'true', maxFilesPerTrigger = '1' );
官方定义说明
Databricks官方将stream()作为DLT SQL中的推荐简化写法,在示例文档中更常见,但readStream()同样被完全支持。二者底层依赖的是同一个流式读取逻辑,和Python API的spark.readStream属于同源实现,只是为SQL语法做了适配。
内容的提问来源于stack exchange,提问作者klenium
相关产品推荐
相关产品推荐

