文档首页 > > SQL语法参考> 数据定义语句> 创建输出流> DWS输出流(通过OBS转储方式)

DWS输出流(通过OBS转储方式)

分享
更新时间:2020/09/29 GMT+08:00

概述

创建sink流将CS数据通过OBS转储方式输出到数据仓库服务(DWS),即CS数据先输出到OBS,然后再从OBS导入到DWS。如何导入OBS数据到DWS具体可参考《数据仓库服务数据库开发指南》“从OBS并行导入数据到集群”章节。

数据仓库服务(Data Warehouse Service,简称DWS)是一种基于公有云基础架构和平台的在线数据处理数据库,为用户提供海量数据挖掘和分析服务。DWS的更多信息,请参见《数据仓库服务管理指南》

注意事项

  • 通过OBS转储支持两种中间文件方式:
    • ORC: ORC格式不支持Array数据类型,如果使用ORC格式,需先在DWS中创建外部服务器,具体可参考《数据仓库服务数据库开发指南》“创建外部服务器”章节。
    • CSV: CSV格式默认记录分隔符为换行符,若属性内容中有换行符,建议配置quote,具体参见表1
  • 如果要写入的表不存在,则会自动创建表。由于CS SQL类型不支持text,如果存在长文本,建议先在数据库中创建表。

前提条件

  • 确保已创建OBS桶和文件夹。

    如何创建OBS桶,具体请参见《对象存储服务控制台指南》中的“创建桶”章节。

    如何新建文件夹,具体请参见《对象存储服务控制台指南》中的“新建文件夹”章节。

  • 该场景作业需要运行在CS的独享集群上,因此要与DWS集群建立VPC对等连接,且用户可以根据实际所需设置相应安全组规则。

    如何建立VPC对等连接,请参考《实时流计算服务用户指南》对等连接章节。

    如何设置安全组规则,请参见《虚拟私有云用户指南》“安全组”章节。

语法

语法格式

CREATE SINK STREAM stream_id (
   attr_name attr_type (',' attr_name attr_type)* 
)WITH (
          type = "dws",
          region = "",
          encode = "",
          field_delimiter = "",
          quote = "",
          db_obs_server = "",
          obs_dir = "",
          username = "",
          password =  "",
          db_url = "",
          table_name = "",
          max_record_num_per_file = "",
          max_dump_file_num = "",
          dump_interval = ""
);

语法说明

表1 语法说明

参数

是否必选

说明

type

输出通道类型,dws表示输出到数据仓库服务中。

region

数据仓库服务所在区域。

encode

编码方式。当前支持csv和orc两种方式。

field_delimiter

属性分隔符。当编码方式为csv时需要配置,建议尽量用不可见字符作为分隔符,如\u0006\u0002。

quote

单字节,建议使用不可见字符,如\u0007。

db_obs_server

已在数据库中创建的外部服务器,如obs_server。

如何创建外部服务器,具体操作步骤可参考《数据仓库服务数据库开发指南》中创建外部服务器章节。

如果编码方式为orc格式时需指定该参数。

obs_dir

中间文件存储目录。格式为{桶名}/{目录名}, 如obs-a1/dir1/subdir。

username

数据库连接用户名。

password

数据库连接密码。

db_url

数据库连接地址。格式为/ip:port/database,如 “192.168.1.21:8000/test1”。

table_name

数据表名,若表不存在,则自动创建。

max_record_num_per_file

每个文件最多存储多少条记录。当文件记录数少于最大值时,该文件会延迟一个转储周期输出。

max_dump_file_num

执行一次转储操作时最多转储多少文件。 当本次转储操作发现文件数小于最大值,则会延迟一个转储周期输出。

dump_interval

转储周期,单位为秒。

delete_obs_temp_file

是否要删除obs上的临时文件,默认为“true”,若设置为“false”,则不会删除obs上的文件,需用户自己清理。

示例

  • CSV格式转储。
    CREATE SINK STREAM car_infos (
      car_id STRING,
      car_owner STRING,
      car_brand STRING,
      car_price INT,
      car_timestamp LONG
    )
    WITH (
      type = "dws",
      region = "cn-north-1" ,
      encode = "csv",
      field_delimiter = "\u0006\u0006\u0002",
      quote = "\u0007",
      obs_dir = "cs-append-2/dws",
      username = "",
      password =  "",
      db_url = "192.168.1.12:8000/test1",
      table_name = "table1",
      max_record_num_per_file = "100",
      max_dump_file_num = "10",
      dump_interval = "10"
    );
  • ORC格式转储。
    CREATE SINK STREAM car_infos (
      car_id STRING,
      car_owner STRING,
      car_brand STRING,
      car_price INT,
      car_timestamp LONG
    )
    WITH (
      type = "dws",
      region = "cn-north-1" ,
      encode = "orc",
      db_obs_server = "obs_server",
      obs_dir = "cs-append-2/dws",
      username = "",
      password =  "",
      db_url = "192.168.1.12:8000/test1",
      table_name = "table1",
      max_record_num_per_file = "100",
      max_dump_file_num = "10",
      dump_interval = "10"
    );
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问