Spark Shell 的使用

news2024/10/2 13:17:55

Spark Shell 的使用

Spark shell 作为一个强大的交互式数据分析工具,提供了一个简单的方式学习 API。它可以使用 Scala(在Java 虚拟机上运行现有的Java库的一个很好方式)或 Python。

Spark Shell 命令

启动 Spark Shell 的时候我们可以指定master 也可以不指定
spark-shell

image-20210326155202105

你也可以看到进程相关的信息

image-20210326155317509

spark-shell --master yarn-client --executor-memory 1G --num-executors 1

image-20210326155236651

spark-shell --master spark://localhost:7077 这种就是我们自己搭建的spark 集群

image-20221209151843998

当我们的spark shell 程序提交后我们可以在Running Applications 中看到

image-20221209151927004

spark-submit

spark-submit 是spark 给我们提供的一个提交任务的工具,就是我们将代码打成jar 包后,提交任务到集群的方式

bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster examples/jars/spark-examples_2.11-2.4.5.jar

这个日志信息还是很全的,我们可以看到大量相关的信息

Warning: Master yarn-cluster is deprecated since 2.0. Please use master "yarn" with specified deploy mode instead.
21/03/26 16:01:34 WARN Utils: Your hostname, kingcall resolves to a loopback address: 127.0.0.1; using 192.168.0.101 instead (on interface en1)
21/03/26 16:01:34 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
21/03/26 16:01:35 INFO Client: Requesting a new application from cluster with 1 NodeManagers
21/03/26 16:01:35 INFO Client: Verifying our application has not requested more than the maximum memory capability of the cluster (8192 MB per container)
21/03/26 16:01:35 INFO Client: Will allocate AM container, with 1408 MB memory including 384 MB overhead
21/03/26 16:01:35 INFO Client: Setting up container launch context for our AM
21/03/26 16:01:35 INFO Client: Setting up the launch environment for our AM container
21/03/26 16:01:35 INFO Client: Preparing resources for our AM container
21/03/26 16:01:35 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
21/03/26 16:01:38 INFO Client: Uploading resource file:/private/var/folders/27/mfdfy0s57037jxrxpl47g15h0000gn/T/spark-1816798f-0b99-40d2-9deb-a1397e9a90e3/__spark_libs__7076815768544123255.zip -> hdfs://kingcall:9000/user/liuwenqiang/.sparkStaging/application_1616744803349_0002/__spark_libs__7076815768544123255.zip
21/03/26 16:01:38 INFO Client: Uploading resource file:/usr/local/spark2.4/examples/jars/spark-examples_2.11-2.4.5.jar -> hdfs://kingcall:9000/user/liuwenqiang/.sparkStaging/application_1616744803349_0002/spark-examples_2.11-2.4.5.jar
21/03/26 16:01:39 INFO Client: Uploading resource file:/private/var/folders/27/mfdfy0s57037jxrxpl47g15h0000gn/T/spark-1816798f-0b99-40d2-9deb-a1397e9a90e3/__spark_conf__1386212354544661399.zip -> hdfs://kingcall:9000/user/liuwenqiang/.sparkStaging/application_1616744803349_0002/__spark_conf__.zip
21/03/26 16:01:39 INFO SecurityManager: Changing view acls to: liuwenqiang
21/03/26 16:01:39 INFO SecurityManager: Changing modify acls to: liuwenqiang
21/03/26 16:01:39 INFO SecurityManager: Changing view acls groups to:
21/03/26 16:01:39 INFO SecurityManager: Changing modify acls groups to:
21/03/26 16:01:39 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users  with view permissions: Set(liuwenqiang); groups with view permissions: Set(); users  with modify permissions: Set(liuwenqiang); groups with modify permissions: Set()
21/03/26 16:01:40 INFO Client: Submitting application application_1616744803349_0002 to ResourceManager
21/03/26 16:01:40 INFO YarnClientImpl: Submitted application application_1616744803349_0002
21/03/26 16:01:41 INFO Client: Application report for application_1616744803349_0002 (state: ACCEPTED)
21/03/26 16:01:41 INFO Client:
	 client token: N/A
	 diagnostics: AM container is launched, waiting for AM container to Register with RM
	 ApplicationMaster host: N/A
	 ApplicationMaster RPC port: -1
	 queue: default
	 start time: 1616745700680
	 final status: UNDEFINED
	 tracking URL: http://localhost:8088/proxy/application_1616744803349_0002/
	 user: liuwenqiang
21/03/26 16:01:42 INFO Client: Application report for application_1616744803349_0002 (state: ACCEPTED)
21/03/26 16:01:43 INFO Client: Application report for application_1616744803349_0002 (state: ACCEPTED)
21/03/26 16:01:44 INFO Client: Application report for application_1616744803349_0002 (state: ACCEPTED)
21/03/26 16:01:45 INFO Client: Application report for application_1616744803349_0002 (state: ACCEPTED)
21/03/26 16:01:46 INFO Client: Application report for application_1616744803349_0002 (state: ACCEPTED)
21/03/26 16:01:47 INFO Client: Application report for application_1616744803349_0002 (state: ACCEPTED)
21/03/26 16:01:48 INFO Client: Application report for application_1616744803349_0002 (state: RUNNING)
21/03/26 16:01:48 INFO Client:
	 client token: N/A
	 diagnostics: N/A
	 ApplicationMaster host: 192.168.0.101
	 ApplicationMaster RPC port: 56995
	 queue: default
	 start time: 1616745700680
	 final status: UNDEFINED
	 tracking URL: http://localhost:8088/proxy/application_1616744803349_0002/
	 user: liuwenqiang
21/03/26 16:01:49 INFO Client: Application report for application_1616744803349_0002 (state: RUNNING)
21/03/26 16:01:50 INFO Client: Application report for application_1616744803349_0002 (state: RUNNING)
21/03/26 16:01:51 INFO Client: Application report for application_1616744803349_0002 (state: RUNNING)
21/03/26 16:01:52 INFO Client: Application report for application_1616744803349_0002 (state: RUNNING)
21/03/26 16:01:53 INFO Client: Application report for application_1616744803349_0002 (state: FINISHED)
21/03/26 16:01:53 INFO Client:
	 client token: N/A
	 diagnostics: N/A
	 ApplicationMaster host: 192.168.0.101
	 ApplicationMaster RPC port: 56995
	 queue: default
	 start time: 1616745700680
	 final status: SUCCEEDED
	 tracking URL: http://localhost:8088/proxy/application_1616744803349_0002/
	 user: liuwenqiang
21/03/26 16:01:53 INFO ShutdownHookManager: Shutdown hook called
21/03/26 16:01:53 INFO ShutdownHookManager: Deleting directory /private/var/folders/27/mfdfy0s57037jxrxpl47g15h0000gn/T/spark-1816798f-0b99-40d2-9deb-a1397e9a90e3
21/03/26 16:01:53 INFO ShutdownHookManager: Deleting directory /private/var/folders/27/mfdfy0s57037jxrxpl47g15h0000gn/T/spark-1a6cc57e-8493-4ceb-b965-d85efd53cede

创建RDD

创建 RDD 主要有以下三种方式:

从本地文件系统创建RDD

先在 Spark_Home 目录下创建 data.txt。

scala> val data = sc.textFile("data.txt")

其中,sc 是 SparkContext 对象,在启动 Spark Shell 的时候自动生成的。

如果数据已经存在外部文件系统,例如本地文件系统,HDFS,HBase,Cassandra,S3 等,可以使用这种方式,即调用 SparkContext 的 textFile 方法,并把文件目录或者路径作为参数。

用 Parallelize 函数创建 RDD

scala> val no = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)scala> val noData = sc.parallelize(no)

这种方法可以用于数据集已经存在的情况。

从其他RDD创建新RDD

scala> val newRDD = no.map(data => (data * 2))

对RDD 进行操作

RDD 总记录条数

计算 RDD 的总记录数可以使用 count() 函数
scala> data.count()

数据过滤操作

过滤操作可以使用 RDD 的 filter 操作,即从已经存在的 RDD 中按条件过滤并创建新 RDD。
scala> val DFData = data.filter(line => line.contains("Elephant"))

执行转换操作和行动操作

可以用点操作符把转换和行动操作串起来执行。比如 filter 操作和 count 操作:
scala> data.filter(line => line.contains("Elephant")).count()

读取 RDD 第一条记录

为了从文件读取第一个记录,可以使用first()函数
scala> data.first()

从 RDD 读取5条记录

scala> data.take(5)

RDD 分区

一个 RDD 通常都会被分成多个分区,查看分区数:
scala> data.partitions.length

注意:如果从HDFS创建新RDD,那么HDFS数据文件的block数将等于分区数。

缓存 RDD

缓存 RDD 可以显著提高数据读取速度和计算速度。一旦把 RDD 缓存在内存中,后续使用这个 RDD 的计算,都会从内存中取数据,这样可以减少磁盘寻道时间,提高数据计算性能。

scala> data.cache()

上面这个操作其实是个转换(Tranformation)操作,也就是说这个命令执行完,RDD 并不会被立即缓存,如果你查看Spark Web UI页面:http://localhost:4040/storage,你是找不到相关缓存信息的。执行cache()操作,RDD并不会立即缓存,直到执行行动(Action)操作,数据才会真正缓存在内存中。比如count()或者collect()

scala> data.count()
scala> data.collect()

现在我们已经执行了行动操作,执行这些操作需要从磁盘读取数据,Spark在处理这些操作的时候,会把数据缓存起来,后续不管对该RDD执行转换操作还是行动操作,都将直接从内存读取,而不需要和磁盘进行交互。所以,可以把多次使用的RDD缓存起来,提升数据处理性能。

从 HDFS 读取数据

要读取 HDFS 的文件,必须要提供文件的完整 URL。也可以是分布式文件系统,文件系统标识是 hdfs,比如:``hdfs://IP:PORT/PATH scala> var hFile = sc.textFile(“hdfs://localhost:9000/inp”)`

用 Scala 编写 wordcout 应用

wordcount 应用,即英文单词数量统计应用,堪称大数据界的 hello word 程序。是最经典的 MapReduce 操作案例之一。

scala> val wc = hFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)

在控制台读取前5个统计结果:

scala> wc.take(5)

把计算结果写入HDFS文件

可以用 saveAsTextFile 操作把计算好的结果保存在 HDFS。

scala> wc.saveAsTextFile("hdfs://localhost:9000/out")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaIO

CPU指令与内核态、用户态 在操作系统中,CPU负责执行指令,这些指令有些来自应用程序,有些是来自底层系统。 有些指令是非常危险的,如清除内存,网络连接等等,如果错误调用的话有可能导致系统崩溃。 因而CPU将指令分为特…

Excel表格的打开密码如何设置和取消?

给Excel表格设置“打开密码”是保护表格的其中一种方法,这样只有输入正确的密码才能打开表格。 那Excel表格的打开密码如何设置和取消呢? 首先,打开Excel表格,点击菜单栏的【文件】选项,然后依次选择【信息】-【保护…

java项目-第175期ssm高校校园点餐系统-java毕业设计

java项目-第175期ssm高校校园点餐系统-java毕业设计 【源码请到下载专栏下载】 今天分享的项目是《ssm高校校园点餐系统》 该项目分为2个角色,管理员、用户和食堂。 用户可以浏览前台,查看菜品,并进行预约和选座; 同时可以跳转到后台查看自己…

基于jsp+mysql+ssm矿场仓储管理系统-计算机毕业设计

项目介绍 本系统采用了BS架构,利用web技术实现了矿场信息的后台管理,针对矿物质的相关信息,销售情况进行管理。是一款后台信息管理系统,具有管理员和员工两个用户权限,系统设计简单,主要是学习资源&#x…

[R语言]正态分布

目录 分布 连续型变量的分布 正态分布 正态分布的推导 正态分布密度曲线 dnorm 正态分布的概率计算 正态分布累积曲线 总体分位数和尾概率 正态分布案例之一 R语言正态分布函数 正态分布相应的概率计算 正态分布的检验 shapiro.test()函数 Kolmogorov-Smirnov连续…

5.3 10篇美食类小红书爆文拆解【玩赚小红书】

案例一:金牌保姆分享12个万能做饭小技巧 ​ 标题: 万能做饭小技巧这个词可以看的出这个方法都是偏向技巧类,对于人人都有做饭的需求来说,也忍不住让人想看看到底是什么内容。“金牌保姆”四个字可谓是将“万能”这2个字完美诠释&…

首次曝光,Alibaba大佬手撸堪称神级的SpringSecurity全彩手册

有人调侃我们说: 程序员不如送外卖。送外卖是搬运食物,自己是搬运代码,都不产出新的东西……透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险……想跳槽,但是更高的平台难进&a…

2023年你应该了解的五大采购管理趋势

采购的未来看起来非常具有前景。随着新技术的出现,采购专业人员有许多新的机会来简化他们的工作并节省企业的资金。 以下是一些你应该了解的2023年采购领域趋势。 1、自动化 采购的最大趋势之一是各种任务的自动化。这可以是任何事情,从自动化询价&am…

STC15 - C51 - 操作寄存器时, 不要操作不相关的位

文章目录STC15 - C51 - 操作寄存器时, 不要操作不相关的位概述笔记生成.i文件的选项编译工程后, 查看.list文件和.i文件.c文件相关内容.list文件.i文件通过.i文件(预处理文件), 就可以看到最终实现代码有啥区别了不好使的代码好使的代码总结ENDSTC15 - C51 - 操作寄存器时, 不要…

分布式系统(故障、恢复)

文章目录故障模型可靠组播基于基本组播基于 IP 组播协定问题ConsensusByzantine generalsInteractive Consistency一些重要结论分布式恢复后向恢复Checkpointing AlgorithmCoordinated CheckpointingIndependent CheckpointingMessage Logging AlgorithmPessimistic message lo…

[附源码]Node.js计算机毕业设计高校运动会管理系统 Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

95.(leaflet之家)leaflet态势标绘-进攻方向采集(燕尾)

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html> <

快速传输大文件,怎么通过网络传大文件给对方(1G以上)

在生活和工作中&#xff0c;我们总是要发送一些比较大的文件给别人&#xff0c;或者在自己的设备之间。在互联网日益发达的今天&#xff0c;我们可以用什么方法通过互联网快速传输大文件&#xff0c;发送1G以上的文件&#xff1f; 一、使用QQ传 在电脑上打开QQ&#xff0c;选…

【技术评论】大数据时代,区块链如何解决数据安全和隐私问题

发表时间&#xff1a;2022年6月23日 信息来源&#xff1a;bsvblockchain.org 在这个时代&#xff0c;像GDPR和HIPAA这样的措施为消费者带来了前所未有的数据保护水平&#xff0c;人们理所当然地想知道&#xff0c;由区块链驱动的数据解决方案如何能够符合这些法规的要求。 (全…

PHP代码审计系列(四)

PHP代码审计系列&#xff08;四&#xff09; 本系列将收集多个PHP代码安全审计项目从易到难&#xff0c;并加入个人详细的源码解读。此系列将进行持续更新。 SQL注入or绕过 源码如下 <?php#GOAL: login as admin,then get the flag; error_reporting(0); require db.in…

Java用户线程和守护线程,线程默认Daemon值是false吗?

文章目录用户线程守护线程必须要在start()方法之前设置守护线程线程默认的daemon值总结Java中通常有两种线程&#xff1a; 用户线程和 守护线程&#xff08;也被称为服务线程&#xff09;通过 Thread.setDaemon(false)设置为 用户线程&#xff08;默认为用户线程&#xff09;通…

【鸿蒙应用开发系列】- 应用置灰方案实现讲解

在某些特殊的日子里&#xff0c;有时候需要对应用进行一个置灰显示处理&#xff0c;在Android中&#xff0c;提供了一些很方便的方法&#xff0c;可以对控件或者应用进行灰色的展示 Android应用置灰方式 1、使用灰色主题皮肤&#xff08;这个开发量比较大&#xff09; 2、图…

LOAM论文阅读

1. 摘要 本文提出一种实现激光雷达里程计与建图方法&#xff0c;使用6自由度的双轴激光雷达进行距离测量。问题的难点在于激光雷达的每一个点的时间戳都不同&#xff0c;运动估计的误差会影响激光点云的配准。目前相关的3D地图一般使用离线批处理方法构建&#xff0c;且使用闭…

回归预测 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多输入单输出

回归预测 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多输入单输出 目录回归预测 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多输入单输出预测效果基本介绍程序设计参考资料预测效果 基本介绍 麻雀搜索算法(Sparrow Search Algorithm, SSA)是于…

2_Oracle_手工建库

一、手工建库的目的 1、方便理解Oracle的体系结构 2、更快更好的创建数据库 3、方便了解建库的每步细节 4、手工建库的实用性 二、dbca生成的脚本 /app/oracle/admin/orcl/scripts/ orcl.sh #!/bin/sh OLD_UMASKumask umask 0027 mkdir -p /app/oracle/admin/orcl/adump mkdi…