数据湖探索 DLI-添加分区(只支持OBS表):示例

时间:2024-07-01 21:07:19

示例

  • 建OBS表时仅有一个分区列,建表成功后添加分区数据。
    1. 先使用DataSource语法创建一个OBS分区表,分区列为external_data,数据存储在obs://bucketName/datapath路径下。
      create table testobstable(id varchar(128), external_data varchar(16)) using JSON OPTIONS (path 'obs://bucketName/datapath') PARTITIONED by (external_data);
    2. 拷贝分区数据目录到obs://bucketName/datapath路径下。例如当前拷贝external_data=22的分区目录下所有文件到obs://bucketName/datapath路径下。
    3. 执行添加分区命令,将分区的元数据信息生效。
      ALTER TABLE testobstable ADD
        PARTITION (external_data='22')
        LOCATION 'obs://bucketName/datapath/external_data=22';
    4. 添加分区成功后,即可根据分区列进行数据查询等操作。
      select * from testobstable where external_data='22';
  • 建OBS表时有多个分区列,建表成功后添加分区数据。
    1. 先使用DataSource语法创建一个OBS分区表,分区列为external_data和dt,数据存储在obs://bucketName/datapath路径下。
      1
      2
      3
      4
      5
      create table testobstable(
        id varchar(128),
        external_data varchar(16),
        dt varchar(16)
      ) using JSON OPTIONS (path 'obs://bucketName/datapath') PARTITIONED by (external_data, dt);
      
    2. 拷贝分区数据目录到obs://bucketName/datapath路径下。例如拷贝external_data=22及其子目录dt=2021-07-27和目录下文件到obs://bucketName/datapath路径下。
    3. 执行添加分区命令,将分区的元数据信息生效。
      1
      2
      3
      4
      ALTER TABLE
        testobstable
      ADD
        PARTITION (external_data = '22', dt = '2021-07-27') LOCATION 'obs://bucketName/datapath/external_data=22/dt=2021-07-27';
      
    4. 添加分区成功后,即可根据分区列进行数据查询等操作。
      1
      2
      select * from testobstable where external_data = '22';
      select * from testobstable where external_data = '22' and dt='2021-07-27';
      
support.huaweicloud.com/sqlreference-dli/dli_08_0081.html