本文为您介绍Spark SQL中的STREAM语法。请注意,这个从EMR-3.23.0开始新增的语法。

为什么需要STREAM语法

一个Stream Query执行前,需要设置一些WriteStream必要的参数,例如checkpointLocation,outputMode等。当前,我们可以通过SET语法来为某个query(通过queryName)设置以上参数。但在使用上会有一定的不便利,例如需要在query前置这些配置。为了更好地支持这些WriteStream必要的参数,EMR提出了STREAM概念。通过定义STREAM来配置WriteStream必要的参数。

需要说明的是:EMR会同时支持SET和STREAM两种方法配置WriteStream必要的参数。

语法

CREATE STREAM queryName
OPTIONS (propertyName=propertyValue[,propertyName=propertyValue]*)
INSERT INTO tbName
queryStatement;

以下列出WriteStream必要的参数:

参数名 说明 默认值
checkpointLocation 流式查询作业的checkpoint路径
outputMode 流式查询的输出模式 Append
triggerType 流式查询的执行模式 ProcessingTime
triggerIntervalMs 流式查询的执行间隔,单位毫秒 0

示例

CREATE STREAM job1
OPTIONS(
checkpointLocation='/tmp/spark',
outputMode='Append',
triggerType='ProcessingTime'
triggerIntervalMs='3000')
INSERT INTO LargeOrders
SELECT * FROM Orders WHERE units > 1000;