《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

相关文章
|
8月前
|
存储 数据采集 搜索推荐
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
本篇文章探讨了 Java 大数据在智慧文旅景区中的创新应用,重点分析了如何通过数据采集、情感分析与可视化等技术,挖掘游客情感需求,进而优化景区服务。文章结合实际案例,展示了 Java 在数据处理与智能推荐等方面的强大能力,为文旅行业的智慧化升级提供了可行路径。
Java 大视界 -- Java 大数据在智慧文旅旅游景区游客情感分析与服务改进中的应用实践(226)
|
8月前
|
机器学习/深度学习 数据采集 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在城市空气质量监测与污染溯源中的应用(216)
本文探讨Java大数据可视化在城市空气质量监测与污染溯源中的创新应用,结合多源数据采集、实时分析与GIS技术,助力环保决策,提升城市空气质量管理水平。
Java 大视界 -- 基于 Java 的大数据可视化在城市空气质量监测与污染溯源中的应用(216)
|
8月前
|
存储 监控 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在企业生产运营监控与决策支持中的应用(228)
本文探讨了基于 Java 的大数据可视化技术在企业生产运营监控与决策支持中的关键应用。面对数据爆炸、信息孤岛和实时性不足等挑战,Java 通过高效数据采集、清洗与可视化引擎,助力企业构建实时监控与智能决策系统,显著提升运营效率与竞争力。
|
8月前
|
Java 大数据 数据处理
Java 大视界 -- 基于 Java 的大数据实时数据处理在工业互联网设备协同制造中的应用与挑战(222)
本文探讨了基于 Java 的大数据实时数据处理在工业互联网设备协同制造中的应用与挑战。文章分析了传统制造模式的局限性,介绍了工业互联网带来的机遇,并结合实际案例展示了 Java 在多源数据采集、实时处理及设备协同优化中的关键技术应用。同时,也深入讨论了数据安全、技术架构等挑战及应对策略。
|
8月前
|
数据采集 搜索推荐 Java
Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与用户体验优化中的应用(221)
本文探讨 Java 大数据在智能教育虚拟学习环境中的应用,涵盖多源数据采集、个性化推荐、实时互动优化等核心技术,结合实际案例分析其在提升学习体验与教学质量中的成效,并展望未来发展方向与技术挑战。
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
Java 大视界 -- Java 大数据机器学习模型在自然语言生成中的可控性研究与应用(229)
本文深入探讨Java大数据与机器学习在自然语言生成(NLG)中的可控性研究,分析当前生成模型面临的“失控”挑战,如数据噪声、标注偏差及黑盒模型信任问题,提出Java技术在数据清洗、异构框架融合与生态工具链中的关键作用。通过条件注入、强化学习与模型融合等策略,实现文本生成的精准控制,并结合网易新闻与蚂蚁集团的实战案例,展示Java在提升生成效率与合规性方面的卓越能力,为金融、法律等强监管领域提供技术参考。
|
8月前
|
存储 人工智能 算法
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用(227)
本文探讨 Java 大数据在智能医疗影像压缩与传输中的关键技术应用,分析其如何解决医疗影像数据存储、传输与压缩三大难题,并结合实际案例展示技术落地效果。
|
8月前
|
机器学习/深度学习 安全 Java
Java 大视界 -- Java 大数据在智能金融反洗钱监测与交易异常分析中的应用(224)
本文探讨 Java 大数据在智能金融反洗钱监测与交易异常分析中的应用,介绍其在数据处理、机器学习建模、实战案例及安全隐私等方面的技术方案与挑战,展现 Java 在金融风控中的强大能力。
|
8月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在生物信息学基因功能预测中的优化与应用(223)
本文探讨了Java大数据与机器学习模型在生物信息学中基因功能预测的优化与应用。通过高效的数据处理能力和智能算法,提升基因功能预测的准确性与效率,助力医学与农业发展。
|
8月前
|
机器学习/深度学习 搜索推荐 数据可视化
Java 大视界 -- Java 大数据机器学习模型在电商用户流失预测与留存策略制定中的应用(217)
本文探讨 Java 大数据与机器学习在电商用户流失预测与留存策略中的应用。通过构建高精度预测模型与动态分层策略,助力企业提前识别流失用户、精准触达,实现用户留存率与商业价值双提升,为电商应对用户流失提供技术新思路。