乐趣区

关于spark:Spark-Spark-Shell使用

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[N]:N 个线程

比方咱们运行在咱们搭建的 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
退出移动版