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,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
4月前
|
分布式计算 运维 Serverless
EMR Serverless Spark服务和EMR Serverless StarRocks服务的比较
**EMR Serverless Spark** 以其出色的稳定性、高效性能、减轻运维负担及成本优化著称,适合大规模数据处理。**EMR Serverless StarRocks** 则以高速查询、存算分离架构和灵活扩缩容见长,侧重企业级功能。两者在不同应用场景中有各自优势,选择应基于具体需求。更多详情,参考阿里云官方资源。
|
17天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
62 2
|
17天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
57 1
|
22天前
|
SQL 分布式计算 Serverless
EMR Serverless Spark:一站式全托管湖仓分析利器
本文根据2024云栖大会阿里云 EMR 团队负责人李钰(绝顶) 演讲实录整理而成
114 2
|
4月前
|
存储 分布式计算 Serverless
|
2月前
|
SQL 分布式计算 Serverless
阿里云 EMR Serverless Spark 版正式开启商业化
阿里云 EMR Serverless Spark 版正式开启商业化,内置 Fusion Engine,100% 兼容开源 Spark 编程接口,相比于开源 Spark 性能提升300%;提供 Notebook 及 SQL 开发、调试、发布、调度、监控诊断等一站式数据开发体验!
147 3
阿里云 EMR Serverless Spark 版正式开启商业化
|
5月前
|
分布式计算 运维 Serverless
EMR Serverless Spark PySpark流任务体验报告
阿里云EMR Serverless Spark是一款全托管的云原生大数据计算服务,旨在简化数据处理流程,降低运维成本。测评者通过EMR Serverless Spark提交PySpark流任务,体验了从环境准备、集群创建、网络连接到任务管理的全过程。通过这次测评,可以看出阿里云EMR Serverless Spark适合有一定技术基础的企业,尤其是需要高效处理大规模数据的场景,但新用户需要投入时间和精力学习和适应。
7184 43
EMR Serverless Spark PySpark流任务体验报告
|
4月前
|
弹性计算 分布式计算 Serverless
全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测
【7月更文挑战第6天】全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测
23706 42
|
4月前
|
分布式计算 Java Serverless
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
本文以 ECS 连接 EMR Serverless Spark 为例,介绍如何通过 EMR Serverless spark-submit 命令行工具进行 Spark 任务开发。
403 7
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
|
3月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决