数据总线DataHub源表
解释:阿里云流数据处理平台DataHub是流式数据(Streaming Data)的处理平台,提供对流式数据的发布(Publish)、订阅(Subscribe)和分发功能,让您可以轻松构建基于流式数据的分析和应用。
DDL定义(举例数据是通过JSON格式传输)
create table datahub_source(
data STRING
) with (
'connector'='datahub',
'endPoint'='<endPoint>',
'project'='<yourProjectName>',
'topic'='<yourTopicName>',
'subId'='<yourSubId>',
'accessId'='<yourAccessId>',
'accessKey'='<yourAccessKey>',
'batchCount'='500',
'batchSize'='512000',
'flushInterval'='5000'
);
WITH 参数说明
参数 | 说明 | 是否必填 | 备注 |
---|---|---|---|
connector | 源表类型 | 是 | 固定值为datahub。 |
endPoint | 消费端点信息 | 是 | 找公司对接阿里平台负责人获取 |
accessId | AccessKey ID | 是 | 登录账户的时候详情里面获取 |
accessKey | AccessKey Secret | 是 | 登录账户的时候详情里面获取 |
project | 读取的项目 | 是 | 无 |
topic | Project下的具体的Topic名称 | 是 | 无 |
subId | topic的订阅ID | 是 | 多个任务不能同时使用同一个订阅。 |
startTime | 启动位点的时间 | 否 | 格式为yyyy-MM-dd hh:mm:ss。 |
retryTimeout | 最大持续重试时间 | 否 | 单位为毫秒,默认值为180000毫秒(半小时)。 |
retryInterval | 重试间隔 | 否 | 单位为毫秒,默认值为1000。 |
maxFetchSize | 单次读取条数 | 否 | 默认值为50。 |
maxBufferSize | 异步读取的最大缓存数据条数 | 否 | 默认值为50。 |
lengthCheck | 单行字段条数检查策略 | 否 | 无 |
columnErrorDebug | 是否打开调试开关。 | 否 | false(默认值):关闭调试功能。true:打开调试开关,打印解析异常的日志。 |
SINK代码示例
CREATE TEMPORARY table datahub_sink(
column_name1 STRING,
column_name2 STRING,
ingest_time STRING,
ds VARCHAR --动态分区列需要显式声明。
) with (
'connector'='odps',
'endpoint'='<endPoint>',
'tunnelEndpoint'='<tunnelEndpoint>',
'project'='<yourProjectName>',
'tablename'='<tablename>',
'topic'='<yourTopicName>',
'accessId'='<yourAccessId>',
'accessKey'='<yourAccessKey>',
'partition' ='ds' --不写分区的值,表示根据ds字段的值写入不同分区。
);
INSERT INTO datahub_sink
SELECT
JSON_VALUE(data, '$.column_name1') as column_name1,
JSON_VALUE(data, '$.column_name2') as column_name2,
cast(unix_timestamp() as string) as ingest_time ,
DATE_FORMAT(FROM_UNIXTIME(cast(unix_timestamp() as bigint)), 'yyyyMMdd') as ds
from datahub_source;