基于华为云DLI运行Spark作业

举报
lyssg 发表于 2021/11/08 16:08:08 2021/11/08
【摘要】 概述 数据湖探索(Data Lake Insight,简称DLI)是完全兼容Apache Spark、Apache Flink、openLooKeng(基于Apache Presto)生态,提供一站式的流处理、批处理、交互式分析的Serverless融合处理分析服务。用户不需要管理任何服务器,即开即用。支持标准SQL/Spark SQL/Flink SQL,支持多种接入方式,并兼容主流数据格...


概述 数据湖探索(Data Lake Insight,简称DLI)是完全兼容Apache Spark、Apache Flink、openLooKeng(基于Apache Presto)生态,提供一站式的流处理、批处理、交互式分析的Serverless融合处理分析服务。用户不需要管理任何服务器,即开即用。支持标准SQL/Spark SQL/Flink SQL,支持多种接入方式,并兼容主流数据格式。数据无需复杂的抽取、转换、加载,使用SQL或程序就可以对云上CloudTable、RDS、DWS、CSS、OBS、ECS自建数据库以及线下数据库的异构数据进行探索。本文介绍如何基于华为云DLI运行Spark作业。

准备工作

1.注册华为云账户并进入控制台,在左侧的导航栏搜索DLI进入DLI控制台界面。

2.购买队列
在DLI控制台左侧导航栏选择队列管理,进入队列列表。

点击右上角购买队列按钮购买队列,如图选择队列规格后提交订单就会生成一个按需计费的通用队列,该队列的规格为16CU。


购买成功后队列管理界面如图所示:

3.开通obs(Object Store Service,对象存储服务)
在最左侧华为云的导航栏中搜索OBS进入OBS服务的控制台,OBS是云上的一个文件系统,其他云服务和用户需要通过它实现数据传输。

在OBS控制台界面点击右上角“创建桶”,在配置界面只需要设置桶名称,其他保持默认,就完成了桶的创建。此处桶名称需要保证唯一性,不能和本用户已有桶重名,也不能和其他用户已有的桶重名。

点击立即创建,可以看到桶列表中已有刚刚创建的桶:

以上就是全部准备工作,下面就可以开发Spark作业提交到DLI上运行了。

提交Spark作业

首先在DLI上运行Spark的示例程序SparkPI,利用大数据计算圆周率,其原理在一个正方形中取离散点,统计到中心的距离小于二分之一边长的点的数量与总数量的比值,就是近似的圆周率。

创建一个scala工程,添加scala的依赖:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.4.5</version>
</dependency>

新增一个scala文件SparkPi.scala:

import org.apache.spark.SparkContext

import scala.math.random

object SparkPi {
 def main(args: Array[String]): Unit = {
  val sc = new SparkContext
  val slices = if (args.length > 0) args(0).toInt else 2
  val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
  val count = sc.parallelize(1 until n, slices).map { i =>
   val x = random * 2 - 1
   val y = random * 2 - 1
   if (x*x + y*y <= 1) 1 else 0
  }.reduce(_ + _)
  println(s"Pi is roughly ${4.0 * count / (n - 1)}")
  sc.stop()
 }
}

将代码打包成jar包上传到OBS桶中:在obs控制台界面选择桶进入桶管理界面,在左侧导航栏选择对象,点击上传对象,传入打包好的jar包。

进入DLI控制台,进入Spark作业界面,点击右上角创建作业:

在作业创建界面中所属队列下拉框中选择准备阶段中创建的队列,应用程序选择obs中上传的jar包,并在主类输入框写入jar包中scala程序的类名就可以点击执行了。为了方便后续的查看,还可以为作业添加名称;为了使得到的圆周率值更准确,还可以配置应用程序参数,数值越大所需的计算量越大,所求的的值越准确。

执行作业后可以在作业列表看到作业的状态:


当看到作业状态变为已成功时,点击更多-Driver日志,就可以看到所求得的圆周率值:

总结

可以看出基于华为云DLI,简单的界面化操作就可以运行一个大数据作业。无论是初涉大数据领域的传统企业还是依赖于大数据分析的互联网ToC企业,都能够集中精力到自身大数据业务的开发上,而无需关注底层的硬件和大数据平台的搭建,可以有效降低运维成本和开发成本。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。