OSS数据湖实践——EMR + Spark + OSS案例

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 构建基于OSS数据源的EMR大数据计算环境,使用Spark大数据计算引擎,实现简单的大数据分析案例。

本文介绍大数据分析引擎spark 基于EMR集群,利用OSS云存储数据,实现一个简单的分析案例。

前提条件

• 已注册阿里云账号,详情请参见注册云账号。
• 已开通E-MapReduce服务和OSS服务。
• 已完成云账号的授权,详情请参见角色授权。
• 已创建Haoop集群,且带有spark组件, 配置好相关的OSS数据源。

步骤一:数据上传至oss

hadoop fs -put course2.csv oss://your-bucket-name/

步骤二:编写处理代码,及打包

1、分析代码

import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.row_number
object OSSExample {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession
      .builder
      .appName("OSSExample")
      .getOrCreate()

    val data=spark.read.format("csv").option("header","true").load("oss://your-bucket-name/course2.csv")
    val data1 = data.groupBy("subject", "level").count()
    val window = Window.partitionBy("subject").orderBy(org.apache.spark.sql.functions.col("count").desc)
    val data2 = data1.withColumn("topn", row_number().over(window)).where("topn <= 1" )
    data2.show(false)
  }
}

2、IDEA打包

IDEA Build -> Build Artifact ->Build

步骤三:上传jar包到Hadoop 或者oss

在本例中,我们把jar上传至OSS中
把jar 上传到集群header节点,然后使用以下命令

hadoop fs -put OSSExample.jar oss://your-bucket-name/

步骤四:创建作业job,运行作业

1589440761148_4bce9074_7251_4635_9a6b_419cff8c7d14

--class OSSExample --master yarn --deploy-mode client --driver-memory 3g --num-executors 10 --executor-memory 3g --executor-cores 3 --conf spark.default.parallelism=50 --conf spark.yarn.am.memoryOverhead=1g --conf spark.yarn.am.memory=2g oss://your-bucket-name/OSSExample.jar

步骤五:查看作业运行是否成功及查看运行结果

1589440928932_7d7a6714_222f_4db6_8ec2_9c986f97677c
1589440948410_da115864_adc9_41da_9fc7_d29f153446e5

总结

通过本次实践,实现了从OSS上读取数据,并在EMR集群上进行简单统计分析的Spark作业运行;通过本次实践,能够了解如何利用Spark对OSS进行分析的具体过程,有助于后续其他复杂作业的开发以及实践。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
28天前
|
分布式计算 运维 大数据
阿里云 EMR Serverless Spark 版免费邀测中
阿里云 EMR Serverless Spark 版,以 Spark Native Engine 为基础,旨在提供一个全托管、一站式的数据开发平台。诚邀您参与 EMR Serverless Spark 版免费测试,体验 100% 兼容 Spark 的 Serverless 服务:https://survey.aliyun.com/apps/zhiliao/iscizrF54
386 0
阿里云 EMR Serverless Spark 版免费邀测中
|
1月前
|
消息中间件 监控 Kafka
Yotpo构建零延迟数据湖实践
Yotpo构建零延迟数据湖实践
30 0
|
1月前
|
消息中间件 存储 数据采集
在线房产公司Zillow数据迁移至数据湖实践
在线房产公司Zillow数据迁移至数据湖实践
40 0
|
1月前
|
存储 分布式计算 关系型数据库
初创电商公司Drop的数据湖实践
初创电商公司Drop的数据湖实践
36 0
|
1月前
|
存储 SQL 分布式计算
Apache Hudi在Linkflow构建实时数据湖的生产实践
Apache Hudi在Linkflow构建实时数据湖的生产实践
38 0
|
1月前
|
存储 分布式计算 分布式数据库
字节跳动基于Apache Hudi构建EB级数据湖实践
字节跳动基于Apache Hudi构建EB级数据湖实践
25 2
|
1月前
|
存储 SQL 数据管理
字节跳动基于Apache Hudi构建实时数据湖平台实践
字节跳动基于Apache Hudi构建实时数据湖平台实践
39 0
|
1月前
|
SQL 关系型数据库 HIVE
KLOOK客路旅行基于Apache Hudi的数据湖实践
KLOOK客路旅行基于Apache Hudi的数据湖实践
45 2
KLOOK客路旅行基于Apache Hudi的数据湖实践
|
2月前
|
存储 运维 监控
飞书深诺基于Flink+Hudi+Hologres的实时数据湖建设实践
通过对各个业务线实时需求的调研了解到,当前实时数据处理场景是各个业务线基于Java服务独自处理的。各个业务线实时能力不能复用且存在计算资源的扩展性问题,而且实时处理的时效已不能满足业务需求。鉴于当前大数据团队数据架构主要解决离线场景,无法承接更多实时业务,因此我们需要重新设计整合,从架构合理性,复用性以及开发运维成本出发,建设一套通用的大数据实时数仓链路。本次实时数仓建设将以游戏运营业务为典型场景进行方案设计,综合业务时效性、资源成本和数仓开发运维成本等考虑,我们最终决定基于Flink + Hudi + Hologres来构建阿里云云原生实时湖仓,并在此文中探讨实时数据架构的具体落地实践。
飞书深诺基于Flink+Hudi+Hologres的实时数据湖建设实践
|
3月前
|
存储 对象存储 SQL
【获奖名单公示】Hologres实时湖仓分析挑战赛
5分钟快速使用Hologres实时湖仓能力,无需移动数据,直接加速读取存储于数据湖OSS上的Hudi、Delta、Paimon等格式类型的数据
【获奖名单公示】Hologres实时湖仓分析挑战赛