更新时间:2024-07-04 GMT+08:00

创建DLI表关联CSS

功能描述

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

Spark跨源开发场景中直接配置跨源认证信息存在密码泄露的风险,优先推荐您使用DLI提供的跨源认证方式。

跨源认证简介及操作方法请参考跨源认证简介

前提条件

创建DLI表关联CSS之前需要创建跨源连接。管理控制台操作请参考增强型跨源连接

语法格式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
CREATE TABLE [IF NOT EXISTS] TABLE_NAME(
  FIELDNAME1 FIELDTYPE1,
  FIELDNAME2 FIELDTYPE2)
  USING CSS OPTIONS (
  'es.nodes'='xx',
  'resource'='type_path_in_CSS',
  'pushdown'='true',
  'strict'='false',
  'batch.size.entries'= '1000',
  'batch.size.bytes'= '1mb',
  'es.nodes.wan.only' = 'true',
  'es.mapping.id' = 'FIELDNAME');

关键字

表1 CREATE TABLE关键字说明

参数

描述

es.nodes

CSS的连接地址,需要先创建跨源连接,管理控制台操作请参考增强型跨源连接

创建增强型跨源连接后,使用CSS提供的"内网访问地址",格式为"IP1:PORT1,IP2:PORT2"。

resource

指定在CSS关联的资源名,用"/index/type"指定资源位置(可简单理解index为database,type为table,但绝不等同)。

说明:
  • ES 6.X版本中,单个Index只支持唯一type,type名可以自定义。
  • ES 7.X版本中,单个Index将使用“_doc”作为type名,不再支持自定义。若访问ES 7.X版本时,该参数只需要填写index即可。

pushdown

CSS的下压功能是否开启,默认为“true”。包含大量IO传输的表在有where过滤条件的情况下能够开启pushdown降低IO。

strict

CSS的下压是否是严格的,默认为“false”。精确匹配的场景下比pushdown降低更多IO。

batch.size.entries

单次batch插入entry的条数上限,默认为1000。如果单条数据非常大,在bulk存储设置的数据条数前提前到达了单次batch的总数据量上限,则停止存储数据,以batch.size.bytes为准,提交该批次的数据。

batch.size.bytes

单次batch的总数据量上限,默认为1mb。如果单条数据非常小,在bulk存储到总数据量前提前到达了单次batch的条数上限,则停止存储数据,以batch.size.entries为准,提交该批次的数据。

es.nodes.wan.only

是否仅通过域名访问es节点,默认为false。使用css服务提供的原始内网IP地址作为es.nodes时,不需要填写该参数或者配置为false。

es.mapping.id

指定一个字段,其值作为es中Document的id。

说明:
  • 相同/index/type下的Document id是唯一的。如果作为Document id的字段存在重复值,则在执行插入es时,重复id的Document将会被覆盖。
  • 该特性可以用作容错解决方案。当插入数据执行一半时,DLI作业失败,会有部分数据已经插入到es中,这部分为冗余数据。如果设置了Document id,则在重新执行DLI作业时,会覆盖上一次的冗余数据。

es.net.ssl

连接安全CSS集群,默认值为false

es.certificate.name

连接安全CSS集群,使用的跨源认证信息名称。跨源认证信息创建方式请参考《数据湖探索用户指南》>《跨源认证》。

batch.size.entries和batch.size.bytes分别对数据条数和数据量大小进行限制。

示例

1
2
3
4
5
6
7
8
CREATE TABLE IF NOT EXISTS dli_to_css (doc_id String, name string, age int)
  USING CSS OPTIONS (
  es.nodes 'to-css-1174404703-LzwpJEyx.datasource.com:9200',
  resource '/dli_index/dli_type',
  pushdown 'false',
  strict 'true',
  es.nodes.wan.only 'true',
  es.mapping.id 'doc_id');