数据湖计算 DLC 系统约束

DLC 完全兼容开源 Apache Spark,支持用户编写业务程序在 DLC 平台上对数据进行读写和分析。本示例演示通过编写 Java 代码在 COS 上读写数据和在 DLC 上建库表、读写表的详细操作,帮助用户在 DLC 上完成作业开发。

相关产品
数据湖计算 DLC 产品页,含版本规格、价格与购买入口。

一、环境准备

依赖: JDK1.8 Maven IntelliJ IDEA

二、开发流程图

DLC Spark JAR 作业开发流程图如下:

三、创建资源

第一次在 DLC 上运行作业,需新建 Spark 作业计算资源,例如新建名称为 "dlc-demo" 的 Spark 作业资源。

1. 登录 数据湖计算 DLC 控制台,选择服务所在区域,在导航菜单中单击数据引擎。

2. 单击左上角创建资源,进入资源配置购买页面。

3. 在集群配置 > 计算引擎类型项选择 Spark 作业引擎。

信息配置 > 资源名称 项填写 “dlc-demo”。新建资源详细介绍请参见购买独享数据引擎。

4. 单击立即开通,确认资源配置信息。

5. 确认信息无误后,单击提交,完成资源配置。

四、上传数据到 COS

创建名称为 “dlc-demo”的存储桶,上传 people.json 文件,用作从 COS 读写数据的示例,people.json 文件的内容如下:

{"name":"Michael"}{"name":"Andy", "age":30}{"name":"Justin", "age":3}{"name":"WangHua", "age":19}{"name":"ZhangSan", "age":10}{"name":"LiSi", "age":33}{"name":"ZhaoWu", "age":37}{"name":"MengXiao", "age":68}{"name":"KaiDa", "age":89}

1. 登录 对象存储 COS 控制台,在左侧菜单导航中单击 存储桶列表。

2. 创建存储桶:单击左上角创建存储桶,名称项填写 “dlc-dmo”,单击下一步完成配置。

3. 上传文件:单击文件列表 > 上传文件,选择本地“people.json”文件上传到“dlc-demo-1305424723”桶里(-1305424723是建桶时平台生成的随机串),单击上传,完成文件上传。新建存储桶详情可参见创建存储桶。

五、新建 Maven 项目

1. 通过 IntelliJ IDEA 新建一个名称为“demo”的 Maven 项目。

2. 添加依赖:在 pom.xml 中添加如下依赖:

<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.2.1</version> <scope>provided</scope></dependency><dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.2.1</version> <scope>provided</scope></dependency>

六、编写代码

编写代码功能为从 COS 上读写数据和在 DLC 上建库、建表、查询数据和写入数据。

1. 从 COS 上读写数据代码示例:

package com.tencent.dlc;import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SaveMode;import org.apache.spark.sql.SparkSession;public class CosService { public static void main( String[] args ) { //1.创建SparkSession SparkSession spark = SparkSession .builder() .appName("Operate data on cos") .config("spark.some.config.option", "some-value") .getOrCreate(); //2.读取cos上的json文件生成数据集,支持多种类型的文件,如 json,csv,parquet,orc,text String readPath = "cosn://dlc-demo-1305424723/people.json"; Dataset<Row> readData = spark.read().json(readPath); //3.对数据集做业务计算操作生成结果数据,计算支持API和SQL形式,这里生成临时表用sql读数据 readData.createOrReplaceTempView("people"); Dataset<Row> result = spark.sql("SELECT * FROM people where age > 3"); //4.结果数据保存到cos String writePath = "cosn://dlc-demo-1305424723/people_output"; //写入支持多种类型的文件,如 json,csv,parquet,orc,text result.write().mode(SaveMode.Append).json(writePath); spark.read().json(writePath).show(); //5.关闭session spark.stop(); }}

2. DLC 上建库、建表、查询数据和写入数据:

package com.tencent.dlc;import org.apache.spark.sql.SparkSession;public class DbService { public static void main(String[] args) { //1.初始化SparkSession SparkSession spark = SparkSession .builder() .appName("Operate DB Example") .getOrCreate(); //2.建数据库 String dbName = " `DataLakeCatalog`.`dlc_db_test` "; String dbSql = "CREATE DATABASE IF NOT EXISTS" + dbName + " COMMENT 'demo test'"; spark.sql(dbSql); //3.建内表 String tableName = "`test`"; String tableSql = "CREATE TABLE IF NOT EXISTS " + dbName + "." + tableName + "(`id` int,`name` string, `age` int)"; spark.sql(tableSql); //4.写数据 spark.sql("INSERT INTO " + dbName + "." + tableName + "VALUES (1,'Andy',12),(2,'Justin',3) "); //5.查询数据 spark.sql(" SELECT * FROM " + dbName + "." + tableName).show(); //6.建外表 String extTableName = "`ext_test`"; spark.sql( "CREATE EXTERNAL TABLE IF NOT EXISTS " + dbName + "." + extTableName + "" + " (`id` int, `name` string, `age` int) " + "ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' " + "STORED AS TEXTFILE LOCATION 'cosn://dlc-demo-1305424723/ext_test '"); //7.写外表数据 spark.sql("INSERT INTO " + dbName + "." + extTableName + "VALUES (1,'LiLy',12),(2,'Lucy',3) "); //8.查询外表数据 spark.sql(" SELECT * FROM " + dbName + "." + extTableName).show(); //9.关闭Session spark.stop(); }}

建外表时,需按照 上传数据到COS的步骤 先在桶里建对应表名文件夹保存表文件

七、调试、编译代码并打成 JAR 包

通过 IntelliJ IDEA 对 demo 项目编译打包,在项目 target 文件夹下生成JAR包 demo-1.0-SNAPSHOT.jar。

八、上传 JAR 包到 COS

登录 COS 控制台,参考 上传数据到 COS 的步骤将 demo-1.0-SNAPSHOT.jar 上传到 COS。

九、新建 Spark Jar 数据作业

创建数据作业前,你需先完成数据访问策略配置,保证数据作业能安全地访问到数据。配置数据访问策略详情请参见 配置数据访问策略。如已配置数据策略名称为:qcs::cam::uin/100018379117:roleName/dlc-demo。

1. 登录 数据湖计算 DLC 控制台,选择服务所在区域,在导航菜单中单击数据作业。

2. 单击左上角创建作业,进入创建页面。

3. 在作业配置页面,配置作业运行参数,具体说明如下:

配置参数 说明
作业名称 自定义 Spark Jar 作业名称,例如:cosn-demo
作业类型 选择 批处理类型
数据引擎 选择 创建资源 步骤创建的 dlc-demo 计算引擎
程序包 选择 COS,在 上传 JAR 包到 COS 步骤上传的 JAR 包 demo-1.0-SNAPSHOT.jar
主类(Main Class) 根据程序代码填写,如:从 COS 上读写数据填: com.tencent.dlc.CosService在 DLC 上建库、建表等填:com.tencent.dlc.DbService
数据访问策略 选择该步骤前创建的策略 qcs::cam::uin/100018379117:roleName/dlc-demo

其他参数值保持默认。

4. 单击保存,在Spark 作业页面可以看到创建的作业。

十、运行并查看作业结果

1. 运行作业:在Spark 作业页面,找到新建的作业,单击运行,即可运行作业。

2. 查看作业运行结果: 可查看作业运行日志和运行结果。

十一、查看作业运行日志

1. 单击作业名称 > 历史任务,查看任务运行状态。

2. 单击任务ID > 运行日志,查看作业运行日志:

十二、查看作业运行结果

1. 运行从 COS 读写数据示例,则到 COS 控制台查看数据写入结果。

2. 运行在 DLC 上建表、建库,则到 DLC 数据探索页面查看建库、建表。

赞 (0)
上一篇 4天前
下一篇 4天前