全部产品
云市场

Table Properties

更新时间:2020-06-15 11:16:09

我们各种不同的表支持不同的table properties,如下

通用的table properties

table_mapping

当DLA里面的表名跟底层数据与的表名不一致的时候,可以用这个property来指定底层数据与的表名,比如我们DLA的表名是 person, 而底层的表名叫 staff, 那么可以这么写:

  1. create external table person (
  2. id int,
  3. name string,
  4. age int
  5. ) tblproperties(
  6. table_mapping = 'staff'
  7. );

column_mapping

当DLA里面的列名跟底层数据与的列名不一致的时候,或者底层压根就没有列的概念的时候,可以用这个property来指定底层数据与DLA列名的对应关系。

比如下面这个例子:

  1. create external table person (
  2. id int,
  3. name string,
  4. age int
  5. ) tblproperties(
  6. column_mapping = 'id,identifier;name,title;'
  7. );

DLA的列名 id 对应到了底层的 identifier, name 对应到了 title, 而没有指定的 age 则对应到底层的 age

OSS

auto.create.location

auto.create.location 的作用是我们可以指定一个OSS上一个不存在的目录来建表,而DLA会自动创建OSS上对应的目录。比如:

  1. CREATE EXTERNAL TABLE person (
  2. `id` int,
  3. `name` string,
  4. `age` int
  5. )
  6. STORED AS TEXTFILE
  7. LOCATION 'oss://bucket001/path_which_does_not_exist/'
  8. TBLPROPERTIES (
  9. 'auto.create.location'='true'
  10. );

compression.type

使用DLA写入OSS的数据默认的压缩格式是SNAPPY,如果不喜欢可以使用 compression.type 手动指定压缩格式:

  1. CREATE EXTERNAL TABLE person (
  2. `id` int,
  3. `name` string,
  4. `age` int
  5. )
  6. STORED AS TEXTFILE
  7. LOCATION 'oss://bucket001/path_which_does_not_exist/'
  8. TBLPROPERTIES (
  9. 'compression.type'='gzip'
  10. );

目前支持的压缩格式有:

  • SNAPPY
  • GZIP
  • NONE: (不压缩)

directory.odps

当需要使用DLA分析MaxCompute的oss外表数据时,需要指定这个参数:

  1. CREATE EXTERNAL TABLE person (
  2. `id` int,
  3. `name` string,
  4. `age` int
  5. )
  6. STORED AS TEXTFILE
  7. LOCATION 'oss://bucket001/path_which_does_not_exist/'
  8. TBLPROPERTIES (
  9. 'directory.odps'='true'
  10. );

这是因为MaxCompute外表的目录结构和普通oss不同,如果不指定这个参数会导致找不到数据文件。