文档首页 > > SQL语法参考> 跨源连接表> CloudTable表> 创建DLI表关联CloudTable

创建DLI表关联CloudTable

分享
更新时间: 2019/09/24 GMT+08:00

功能描述

使用CREATE TABLE命令创建DLI表并关联CloudTable上已有的表。

语法格式

  • 单个RowKey
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    CREATE TABLE [IF NOT EXISTS] TABLE_NAME (
    ATTR1TYPE,
    ATTR2TYPE,
    ATTR3TYPE)
    USING CLOUDTABLE OPTIONS (
    'ClusterId'='xx',
    'ZKHost'='xx',
    'TableName'='TABLE_IN_CLOUDTABLE',
    'RowKey'='ATTR1',
    'Cols'='ATTR2:CF1.C1, ATTR3:CF1.C2');
    
  • 组合RowKey
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    CREATE TABLE [IF NOT EXISTS] TABLE_NAME (
    ATTR1 String,
    ATTR2 String,
    ATTR3TYPE)
    USING CLOUDTABLE OPTIONS (
    'ClusterId'='xx',
    'ZKHost'='xx',
    'TableName'='TABLE_IN_CLOUDTABLE',
    'RowKey'='ATTR1:2, ATTR2:10',
    'Cols'='ATTR2:CF1.C1, ATTR3:CF1.C2');
    

关键字

表1 CREATE TABLE参数描述

参数

描述

ClusterId

指定的创建CloudTable的集群ID。

ZKHost

非必填,使用直连方式访问CloudTable集群时需要填写的CloudTable集群的ZK连接地址。

使用此参数时,需要先创建跨源连接,具体请参考SQL跨源连接Spark跨源连接

缺省时,DLI将使用REST方式访问CloudTable集群,但性能与使用直连访问方式相比较差。

TableName

指定在CloudTable关联的表名。

RowKey

指定作为行键的DLI表的字段,可以选择多个作为组合rowkey,格式为“属性名1:长度, 属性名2:长度”。

Cols

通过逗号分隔的DLI表字段与CloudTable表的列之间的对应关系。其中,冒号前面放置DLI表字段,冒号后面放置CloudTable表信息,用‘.’分隔CloudTable表的列族与列名。

注意事项

  • 若所要创建的表已经存在将报错,可以通过添加IF NOT EXISTS参数跳过该错误。
  • OPTIONS中的所有参数是必选的,参数名称大小写不敏感,但参数值大小写敏感。
  • OPTIONS中引号内的值前后不能带空格,空格也会被当做有效值。
  • 表名及列名的描述仅支持字符串常量。
  • 创建表时要说明列名及对应的数据类型,目前支持的数据类型为:boolean、short、int、long、float、double和string。
  • 作为RowKey的字段(如上述语法格式中的ATTR1),其值不能为null,长度要大于0,小于或等于32767。
  • Cols与RowKey中的字段加起来的数量必须与DLI表的字段保持一致,即表中所有的字段都到对应到Cols和RowKey中,但是顺序可以任意。
  • 组合Rowkey只支持String类型,在使用组合Rowkey时,每个属性后面必须带上长度。当Rowkey指定的字段只有一个的时候,该字段的类型可以是支持的所有数据类型,并且不需要填写长度。
  • 在组合Rowkey的场景中
    • 插入Rowkey数据时,如果某个属性的实际数据的长度比属性作为Rowkey时指定的长度要短,则会在数据后面补'\0'字符;如果某个属性的实际数据的长度比属性作为Rowkey时指定的长度要长,则会在实际插入CloudTable的时候进行截断。
    • 读取CloudTable上的Rowkey数据时,如果某个属性的实际数据的长度比属性作为Rowkey时指定的长度要短,则会抛出异常(OutofBoundException);如果某个属性的实际数据的长度比属性作为Rowkey时指定的长度要长,则会在读取时进行截断。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
CREATE TABLE test_ct(
ATTR1 int,
ATTR2 int,
ATTR3 string)
using cloudtable OPTIONS (
'ClusterId'='18bcf1d4-1fed-416f-bb89-b1db01cf98d9',
'ZKHost'='to-cloudtable-1174405101-CE1bDm5B.datasource.com:2181',
'TableName'='CT_TABLE',
'RowKey'='ATTR1',
'Cols'='ATTR2:CF1.C1, ATTR3:CF1.C2');
分享:

    相关文档

    相关产品

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

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

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

字符长度不能超过200

提交反馈 取消

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

跳转到云社区