数据湖计算 DLC PySpark 作业开发指南

DLC 支持 Python 语言编写的程序运行作业 。本示例演示通过编写 Python 代码在 对象存储(COS)上读写数据和在 DLC 上建库表、读写表的详细操作,帮助用户在 DLC 上完成作业开发。

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

一、环境准备

依赖:PyCharm 或其他 Python 编程开发工具。

二、开发流程图

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是建桶时平台生成的随机串),单击上传,完成文件上传。新建存储桶详情请参见 创建存储桶。

五、新建 Python 项目

通过 PyCharm 新建一个名称为“demo”的 项目。

六、编写代码

1. 新建 cos.py 文件,编写代码,功能为从 COS 上读写数据和在 DLC 上建库、建表、查询数据和写入数据。

import sysfrom pyspark.sql import SparkSessionfrom pyspark.sql import Rowif __name__ == "__main__": spark = SparkSession\\ .builder\\ .appName("Operate data on cos")\\ .enableHiveSupport()\\ .getOrCreate() # 1.读cos上的数据 支持多种类型的文件 如 json,csv,parquet,orc,text read_path = "cosn://dlc-demo-1305424723/people.json" peopleDF = spark.read.json(read_path) # 2.对数据做操作 peopleDF.createOrReplaceTempView("people") data_src = spark.sql("SELECT * FROM people WHERE age BETWEEN 13 AND 19") data_src.show() # 3.写数据 write_path = "cosn://dlc-demo-1305424723/people_output" data_src.write.csv(path=write_path, header=True, sep=",", mode='overwrite') spark.stop()

2. 新建 db.py 文件,编写代码,功能为 DLC 上建库、建表、查询数据和写入数据。

from os.path import abspathfrom pyspark.sql import SparkSessionif __name__ == "__main__": spark = SparkSession \\ .builder \\ .appName("Operate DB Example") \\ .enableHiveSupport()\\ .getOrCreate() # 1.建数据库 spark.sql("CREATE DATABASE IF NOT EXISTS `DataLakeCatalog`.`dlc_db_test_py` COMMENT 'demo test' ") # 2.建内表 spark.sql("CREATE TABLE IF NOT EXISTS `DataLakeCatalog`.`dlc_db_test_py`.`test`(`id` int,`name` string,`age` int) ") # 3.写内数据 spark.sql("INSERT INTO `DataLakeCatalog`.`dlc_db_test_py`.`test` VALUES (1,'Andy',12),(2,'Justin',3) ") # 4.查内数据 spark.sql("SELECT * FROM `DataLakeCatalog`.`dlc_db_test_py`.`test` ").show() # 5.建外表 spark.sql("CREATE EXTERNAL TABLE IF NOT EXISTS `DataLakeCatalog`.`dlc_db_test_py`.`ext_test`(`id` int, `name` string, `age` int) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS TEXTFILE LOCATION 'cosn://cry-1305424723/ext_test' ") # 6.写外数据 spark.sql("INSERT INTO `DataLakeCatalog`.`dlc_db_test_py`.`ext_test` VALUES (1,'Andy',12),(2,'Justin',3) ") # 7.查外数据 spark.sql("SELECT * FROM `DataLakeCatalog`.`dlc_db_test_py`.`ext_test` ").show() spark.stop()

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

七、调式

PyCharm 调式无语法错误。

八、上传 py 文件到 COS

登录 COS 控制台,参考上文上传数据到 COS 的步骤将 cos.py、db.py上传到 COS。

九、新建 Spark Jar 数据作业

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

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

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

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

配置参数 说明
作业名称 自定义 Spark 作业名称,例如:cosn_py
作业类型 选择 批处理类型
数据引擎 选择 创建资源 步骤创建的 dlc-demo 计算引擎
程序包 选择 COS,在 上传 py 文件到 COS 步骤的上传 py 文件:从 COS 上读写数据就选择: cosn://dlc-demo-1305424723/cos.py在 DLC 上建库、建表等选择:cosn://dlc-demo-1305424723/db.py
数据访问策略 选择该步骤前创建的策略 qcs::cam::uin/100018379117:roleName/dlc-demo

其他参数值保持默认。

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

十、运行并查看作业结果

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

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

十一、查看作业运行日志

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

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

十二、查看作业运行结果

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

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

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