前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >慕mooc-大数据工程师2024学习分享

慕mooc-大数据工程师2024学习分享

原创
作者头像
用户11127530
发布2024-07-15 23:01:00
750
发布2024-07-15 23:01:00

Apache Spark 是一个开源的统一分析引擎,用于大规模数据处理。它提供了一个简单且富有表现力的编程模型,支持多种语言,包括 Java、Scala、Python 和 R。Spark 的速度比 Hadoop MapReduce 快 100 倍,因为它在内存中执行计算,并优化了数据在集群中的移动方式。

Spark 核心概念

  • RDD (Resilient Distributed Dataset,弹性分布式数据集): Spark 的核心抽象,表示一个不可变的、分区的数据集,可以并行操作。RDD 可以从外部数据源(如 HDFS、本地文件系统、数据库等)创建,也可以通过转换其他 RDD 创建。
  • Transformation (转换): 对 RDD 进行的操作,例如 map、filter、reduceByKey 等。Transformation 是惰性求值的,只有在 Action 操作被触发时才会真正执行。
  • Action (动作): 触发 RDD 计算的操作,例如 count、collect、saveAsTextFile 等。Action 会提交 Spark 作业并返回结果。
  • Driver Program: Spark 应用程序的控制程序,负责创建 SparkContext、提交 Spark 作业以及收集结果。
  • Cluster Manager: 负责管理和分配集群资源,例如 Yarn、Mesos、Standalone 等。
  • Executor: 运行在 Worker 节点上的进程,负责执行 Driver Program 发送的任务。
  • Stage (阶段): Spark 作业被划分为多个阶段,每个阶段包含一组可以并行执行的任务。
  • Task (任务): Spark 作业的最小执行单元,每个任务处理 RDD 的一个分区。

Spark 工作流

  1. 用户编写 Spark 应用程序 (Driver Program)。
  2. Driver Program 连接到 Cluster Manager,请求资源。
  3. Cluster Manager 分配资源,启动 Executor 进程。
  4. Driver Program 将 Spark 作业转换为 DAG (Directed Acyclic Graph,有向无环图)。
  5. DAG 被划分为多个 Stage,每个 Stage 包含一组可以并行执行的任务。
  6. Executor 执行任务,并将结果返回给 Driver Program。
  7. Driver Program 收集所有结果并返回给用户。

大数据工程师2024-Spark应用

代码语言:python
代码运行次数:0
复制
from pyspark.sql import SparkSession

# 初始化 SparkSession
spark = SparkSession.builder \
    .appName("Spark数据处理示例") \
    .getOrCreate()

# 读取数据
data = [("Alice", 25), ("Bob", 30), ("Charlie", 28)]
df = spark.createDataFrame(data, ["name", "age"])

# 数据处理
# 1. 使用filter过滤年龄大于28岁的数据
df_filtered = df.filter(df.age > 28)

# 2. 使用groupBy分组统计每个年龄的人数
df_grouped = df.groupBy("age").count()

# 3. 使用join连接两个DataFrame
data2 = [("Alice", "female"), ("Bob", "male"), ("David", "male")]
df2 = spark.createDataFrame(data2, ["name", "gender"])
df_joined = df.join(df2, on="name", how="inner")

# 显示结果
df_filtered.show()
df_grouped.show()
df_joined.show()

# 停止 SparkSession
spark.stop()
  1. 初始化 SparkSession: 创建 SparkSession 是 Spark 应用的入口,这里我们设置应用名为 "Spark数据处理示例"。
  2. 读取数据: 使用 spark.createDataFrame 从 Python 列表创建 DataFrame,DataFrame 是 Spark 中的数据抽象,类似于关系型数据库中的表。
  3. 数据处理:
    • 使用 filter 过滤年龄大于 28 岁的数据。
    • 使用 groupBy 按年龄分组,并使用 count 统计每组人数。
    • 使用 join 将两个 DataFrame 按照姓名进行内连接。
  4. 显示结果: 使用 show() 方法展示处理后的 DataFrame 内容。
  5. 停止 SparkSession: 使用 spark.stop() 停止 SparkSession,释放资源。
代码语言:bash
复制
spark-submit spark_data_processing.py
代码语言:bash
复制
+------+---+
|  name|age|
+------+---+
|   Bob| 30|
+------+---+

+---+-----+
|age|count|
+---+-----+
| 25|    1|
| 30|    1|
| 28|    1|
+---+-----+

+------+---+------+
|  name|age|gender|
+------+---+------+
|   Bob| 30|  male|
|Alice| 25|female|
+------+---+------+

大数据工程师2024-数仓整体架构设计

1. 数仓概念

数据仓库 (Data Warehouse) 是一个面向主题的、集成的、随时间变化的、非易失的数据集合,用于支持管理决策。

  • 面向主题: 数据以主题组织,例如客户、产品、销售等。
  • 集成: 来自不同数据源的数据被整合到一起。
  • 随时间变化: 数据存储历史数据和当前数据。
  • 非易失: 数据一旦加载到数据仓库中就不会被删除或修改。

2. 数仓架构

2.1. 传统数仓架构

  • ODS 层 (Operation Data Store,操作数据存储层): 存储来自业务系统的原始数据,通常以增量方式加载。
  • DWD 层 (Data Warehouse Detail,数据仓库明细层): 对 ODS 层数据进行清洗、转换、去重等操作,提供更干净、更规范的数据。
  • DWS 层 (Data Warehouse Service,数据仓库服务层): 对 DWD 层数据进行轻度汇总,为不同的业务主题提供服务。
  • ADS 层 (Application Data Service,应用数据服务层): 存储面向特定业务场景的数据,例如报表、仪表盘等。

2.2. 现代数仓架构

随着大数据技术的兴起,现代数仓架构更加灵活和可扩展,例如:

  • 湖仓一体 (Lakehouse): 将数据湖的灵活性和数据仓库的结构化特性结合起来。
  • 数据中台: 提供数据采集、存储、加工、分析和服务等全链路能力。

3. 数仓建设流程

  1. 需求分析: 明确业务需求和数据需求。
  2. 架构设计: 设计数仓架构、数据模型和 ETL 流程。
  3. 数据采集: 从各个数据源采集数据到数据仓库。
  4. 数据存储: 选择合适的存储引擎存储数据,例如 Hadoop、Hive、HBase 等。
  5. 数据处理: 使用 ETL 工具对数据进行清洗、转换、加载等操作。
  6. 数据分析: 使用 BI 工具或机器学习算法对数据进行分析。
  7. 数据可视化: 使用报表、仪表盘等方式展示数据分析结果。

4. 数仓关键技术

  • 数据建模: 设计数据仓库的数据模型,例如星型模型、雪花模型等。
  • ETL 工具: 使用 ETL 工具进行数据抽取、转换和加载,例如 Sqoop、DataX、Spark 等。
  • 数据存储: 选择合适的存储引擎存储数据,例如 Hadoop、Hive、HBase、Kudu 等。
  • 数据分析: 使用 SQL、HiveQL、Spark SQL 等工具进行数据分析。
  • 数据可视化: 使用 Tableau、Power BI、Superset 等工具进行数据可视化。

5. 数仓最佳实践

  • 数据质量管理: 建立数据质量监控机制,确保数据准确性和一致性。
  • 元数据管理: 建立元数据管理系统,管理数据仓库的元数据信息。
  • 数据安全: 实施数据安全策略,保护数据仓库中的敏感数据。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 大数据工程师2024-数仓整体架构设计
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档