《Spark与Hadoop大数据分析》——3.4 Spark 应用程序

简介: 本节书摘来自华章计算机《Spark与Hadoop大数据分析》一书中的第3章,第3.4节,作者 [美]文卡特·安卡姆(Venkat Ankam),译 吴今朝,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 Spark 应用程序

让我们来了解 Spark Shell 和 Spark 应用程序之间的区别,以及如何创建和提交它们。

3.4.1 Spark Shell 和 Spark 应用程序

Spark 让你可以通过一个简单的、专门用于执行 Scala、Python、R 和 SQL 代码的 Spark shell 访问数据集。用户探索数据并不需要创建一个完整的应用程序。他们可以用命令开始探索数据,这些命令以后可以转换为程序。这种方式提供了更高的开发生产效率。Spark 应用程序则是使用 spark-submit 命令提交的带有 SparkContext 的完整程序。

Scala 程序通常使用 Scala IDE 或 IntelliJ IDEA 编写,并用 SBT 进行编译。Java 程序通常在 Eclipse 中编写,用 Maven 进行编译。Python 和 R 程序可以在任何文本编辑器中编写,也可以使用 Eclipse 等 IDE。一旦编写好 Scala 和 Java 程序,它们会被编译并用 spark-submit 命令执行,如下所示。由于 Python 和 R 是解释型语言,它们是使用 spark-submit 命令直接执行的。因为 Spark 2.0 是用 scala 2.11 构建的,因此,用 Scala 构建 Spark 应用程序就需要用到 scala 2.11。

3.4.2 创建 Spark 环境

任何 Spark 程序的起点都是创建一个 Spark 环境,它提供了一个到 Spark API 的入口。要设置配置属性,需要把一个 SparkConf 对象传递到 SparkContext,如下面的 Python 代码所示:

image

3.4.3 SparkConf

SparkConf 是 Spark 中的主要配置机制,创建新的 SparkContext 时需要一个它的实例。SparkConf 实例包含的是一些字符串的键/值对,对应了用户需要覆盖默认值的那些配置选项。SparkConf 设置可以被硬编码到应用程序代码中,从命令行传递,或从配置文件传递,如以下代码所示:

image
image

image

3.4.4 SparkSubmit

spark-submit 脚本用于在具有任何集群资源管理器的集群上启动 Spark 应用程序。

SparkSubmit 允许动态设置配置,然后在应用程序启动时(当构建新的 SparkConf 时)注入到环境中。如果使用 SparkSubmit,用户的应用程序可以只构造一个“空”的 SparkConf,并将其直接传递给 SparkContext 构造函数。SparkSubmit 工具为最常见的 Spark 配置参数提供了内置标志(flag),还提供了一个通用的 --conf 标志,它可以接受任何 Spark 配置值,如下所示:

image

在有多个配置参数的情况下,可以将它们全部放在一个文件中,并利用 --properties-file 参数把该文件传递给应用程序:

image
image

--jars 选项里包含的应用程序依赖 JAR 包会自动发送到工作机节点。对于 Python 而言,等效的 --py-files 选项可用于将 .egg、.zip 和 .py 库分发到执行进程。注意,这些 JAR 包和库文件会被复制到执行进程节点上每个 SparkContext 的工作目录中。在创建 JAR 包时,最好把所有代码依赖都添加到一个 JAR 包里。这可以在 Maven 或 SBT 中轻松完成。

要获取 spark-submit 的完整选项列表,请使用以下命令:

image

3.4.5 Spark 配置项的优先顺序

Spark 配置优先顺序,从高到低,如下所示:

(1)在用户代码中用 SparkConf 对象上的 set() 函数显式声明的配置。
(2)传递给 spark-submit 或 spark-shell 的标志。
(3)在 spark-defaults.conf 属性文件中的值。
(4)Spark 的默认值。

3.4.6 重要的应用程序配置

用于提交应用程序的一些重要配置参数如下表所示:

image
image

相关文章
|
7月前
|
人工智能 自然语言处理 数据挖掘
云上玩转Qwen3系列之三:PAI-LangStudio x Hologres构建ChatBI数据分析Agent应用
PAI-LangStudio 和 Qwen3 构建基于 MCP 协议的 Hologres ChatBI 智能 Agent 应用,通过将 Agent、MCP Server 等技术和阿里最新的推理模型 Qwen3 编排在一个应用流中,为大模型提供了 MCP+OLAP 的智能数据分析能力,使用自然语言即可实现 OLAP 数据分析的查询效果,减少了幻觉。开发者可以基于该模板进行灵活扩展和二次开发,以满足特定场景的需求。
|
12月前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
363 71
|
5月前
|
机器学习/深度学习 Java 大数据
Java 大视界 -- Java 大数据在智能政务公共资源交易数据分析与监管中的应用(202)
本篇文章深入探讨了 Java 大数据在智能政务公共资源交易监管中的创新应用。通过构建高效的数据采集、智能分析与可视化决策系统,Java 大数据技术成功破解了传统监管中的数据孤岛、效率低下和监管滞后等难题,为公共资源交易打造了“智慧卫士”,助力政务监管迈向智能化、精准化新时代。
|
数据采集 监控 数据可视化
BI工具在数据分析和业务洞察中的应用
BI工具在数据分析和业务洞察中的应用
352 11
|
12月前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
495 73
|
8月前
|
机器学习/深度学习 数据可视化 算法
销售易CRM:移动端应用与数据分析双轮驱动企业增长
销售易CRM移动端应用助力企业随时随地掌控业务全局。销售人员可实时访问客户信息、更新进展,离线模式确保网络不佳时工作不中断。实时协作功能提升团队沟通效率,移动审批加速业务流程。强大的数据分析与可视化工具提供深度洞察,支持前瞻性决策。客户行为分析精准定位需求,优化营销策略。某中型制造企业引入后,业绩提升30%,客户满意度提高25%。
|
11月前
|
存储 数据采集 数据可视化
Pandas数据应用:医疗数据分析
Pandas是Python中强大的数据操作和分析库,广泛应用于医疗数据分析。本文介绍了使用Pandas进行医疗数据分析的常见问题及解决方案,涵盖数据导入、预处理、清洗、转换、可视化等方面。通过解决文件路径错误、编码不匹配、缺失值处理、异常值识别、分类变量编码等问题,结合Matplotlib等工具实现数据可视化,并提供了解决常见报错的方法。掌握这些技巧可以提高医疗数据分析的效率和准确性。
338 22
|
12月前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
549 5
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
809 1