NSpark Shell是Spark提供的一个强大的交互分析数据的工具,我们直接用$SPARK_HOME/bin/spark-shell
命令来Spark Shell启动,如果在bin目录下,可以直接用spark-shell
。
进入后,可以看到已经初始化了sc和spark。
参数
Spark Shell还支持其他参数,比如master、executor-memory等。我们可以通过$SPARK_HOME/bin/spark-shell --help
来查看
master
master的值包括spark、mesos、yarn、k8s以及local,我们上面没有指定master,默认是local的,从上图可以看出来。
模式 | 描述 | 格式 |
---|---|---|
spark | 在spark的stanalone集群运行,也就是上一篇搭建的高可用集群 | spark://host:port |
mesos | 运行在mesos资源管理器上 | mesos://host:port |
yarn | 运行在yarn资源管理器上 | |
k8s | 运行在k8s集群上 | https://host:port |
local | 本地模式,本地运行 | local:1个线程 local[*]:不限线程 local[K]:K个线程 local[K,F]:K个线程,最大F个线程 local[*,F]:不限线程但是最大F个线程 |
比如我们运行在我们搭建的spark集群上,可以看到sc后面的master就是我们的spark集群。
[bigdata@bigdata01 test]$ $SPARK_HOME/bin/spark-shell \
> --master spark://bigdata01:7077,bigdata03:7077
其他
- executor-memory:executor的内存,默认1G
- total-executor-cores:standalone模式才有的参数,定义所有executors的cpu数。
实例
从hdfs中读取一个文件,并统计这个文件多少行,以及第一行的内容等。
文件test.txt内容:
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
上传到hdfs
[bigdata@bigdata01 test]$ hadoop fs -put /home/bigdata/test/test.txt /dajun/test
进入spark shell
[bigdata@bigdata01 test]$ $SPARK_HOME/bin/spark-shell --master spark://bigdata01:7077,bigdata03:7077 --executor-memory 512M --total-executor-cores 2
在spark shell中操作
# 读取文件
scala> val textFile = spark.read.textFile("/dajun/test/test.txt")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]
# 统计数量
scala> textFile.count()
res0: Long = 6
# 获取第一行
scala> textFile.first()
res1: String = aaaaa
# 过滤
scala> textFile.filter(line => line.contains("a")).count()
res2: Long = 1
还可以使用缓存,textFile.cache()
,这样在第二次执行textFile.count()
时就会读取缓存的内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。