数据湖探索 DLI-作业相关:导入数据

时间:2025-02-12 14:54:10

导入数据

DLI 提供导入数据的接口。您可以使用该接口将存储在OBS中的数据导入到已创建的DLI表或者OBS表中。示例代码如下:

 1 2 3 4 5 6 7 8 910111213141516171819202122
//实例化importJob对象,构造函数的入参包括队列、数据库名、表名(通过实例化Table对象获取)和数据路径private static void importData(Queue queue, Table DLITable) throws DLIException {    String dataPath = "OBS Path";    queue = client.getQueue("queueName");    CsvFormatInfo formatInfo = new CsvFormatInfo();    formatInfo.setWithColumnHeader(true);    formatInfo.setDelimiter(",");    formatInfo.setQuoteChar("\"");    formatInfo.setEscapeChar("\\");    formatInfo.setDateFormat("yyyy/MM/dd");    formatInfo.setTimestampFormat("yyyy-MM-dd HH:mm:ss");    String dbName = DLITable.getDb().getDatabaseName();    String tableName = DLITable.getTableName();    ImportJob importJob = new ImportJob(queue, dbName, tableName, dataPath);    importJob.setStorageType(StorageType. CS V);    importJob.setCsvFormatInfo(formatInfo);    System.out.println("start submit import table: " + DLITable.getTableName());    //调用ImportJob对象的submit接口提交导入作业    importJob.submit(); //调用ImportJob对象的getStatus接口查询导入作业状态    JobStatus status = importJob.getStatus();    System.out.println("Job id: " + importJob.getJobId() + ", Status : " + status.getName());}
  • 在提交导入作业前,可选择设置导入数据的格式,如样例所示,调用ImportJob对象的setStorageType接口设置数据存储类型为csv,数据的具体格式通过调用ImportJob对象的setCsvFormatInfo接口进行设置。
  • 在提交导入作业前,可选择设置导入数据的分区并配置是否是overwrite写入,分区信息可以调用ImportJob对象的setPartitionSpec接口设置,如:importJob.setPartitionSpec(new PartitionSpec("part1=value1,part2=value2")),也可以在创建ImportJob对象的时候直接通过参数的形式创建 。导入作业默认是追加写,如果需要覆盖写,则可以调用ImportJob对象的setOverWrite接口设置,如:importJob.setOverWrite(Boolean.TRUE)。
  • 当OBS桶目录下有文件夹和文件同名时,加载数据会优先指向该路径下的文件而非文件夹。建议创建OBS对象时,在同一级中不要出现同名的文件和文件夹。
support.huaweicloud.com/sdkreference-dli/dli_04_0016.html