
# Flink作业输出流写入数据到OBS，通过该OBS文件路径创建的DLI表查询无数据
#### 问题现象
使用Flink作业输出流写入数据到了OBS中，通过该OBS文件路径创建的DLI表进行数据查询时，无法查询到数据。
例如，使用如下Flink结果表将数据写入到OBS的"obs://obs-sink/car_infos"路径下。
```
create sink stream car_infos_sink (
  carId string,
  carOwner string,
  average_speed double,
  buyday string
  ) partitioned by (buyday)
  with (
    type = "filesystem",
    file.path = "obs://obs-sink/car_infos",
    encode = "parquet",
    ak = "{{myAk}}",
    sk = "{{mySk}}"
);
```
通过该OBS文件路径创建DLI分区表，在DLI查询car_infos表数据时没有查询到数据。
```
create table car_infos (
  carId string,
  carOwner string,
  average_speed double
)
  partitioned by (buyday string)
  stored as parquet
  location 'obs://obs-sink/car_infos';
```
#### 解决方案
1. 在DLI创建Flink结果表到OBS的作业时，如上述举例中的car_infos_sink表，是否开启了Checkpoint。如果未开启则需要开启Checkpoint参数，重新运行作业生成OBS数据文件。 开启Checkpoint步骤如下。
   1. 到DLI管理控制台，左侧导航栏选择"作业管理 \> Flink作业"，在对应的Flink作业所在行，操作列下单击"编辑"。
   
   2. 在"运行参数"下，查看"开启Checkpoint"参数是否开启。
      图1开启Checkpoint   
      ![](https://support.huaweicloud.com/dli_faq/zh-cn_image_0000001195451706.png "点击放大") 
    
2. 确认Flink结果表的表结构和DLI分区表的表结构是否保持一致。如问题描述中car_infos_sink和car_infos表的字段是否一致。
3. 通过OBS文件创建DLI分区表后，是否执行以下命令从OBS路径中恢复分区信息。如下，在创建完DLI分区表后，需要恢复DLI分区表car_infos分区信息。
   ```
   alter table car_infos recover partitions;
   ```
   
 
