文章目录

  • 1. 注意,我的环境跟你的环境一样吗?
  • 2. 如何执行spark-shell脚本?
  • 3. 如何使用 spark-shell?Scala编程语言
  • 附:使用到的包
  • 1. aws java sdk jar包版本(aws服务)
  • 2. hadoop aws 包版本(aws服务)
  • 3. jackson包版本(数据绑定、注解)



1. 注意,我的环境跟你的环境一样吗?

环境:原生 spark (版本到时候补,不在工作区)
系统:Ubuntu 16.04
Jar包版本:见文章尾部(太长啦,放开头不美观)


2. 如何执行spark-shell脚本?

首先呢,先运行你的 spark-shell 脚本。你肯定知道它是在 /spark/bin/ 目录下的吧!
切换到 spark-shell sh脚本所在的目录,然后执行它进入命令行。

$ cd /spark/bin/
$ ./spark-shell	//我是执行命令

然后会打印一大串日志信息,看见 文本形式输出的 spark 图标,并且 显示了 spark> 命令行输入的时候就是成功啦。

spark>

在这一大串日志的信息中,我们要知道的其实就等同于以下代码的效果:

//Scala 编程语言
val conf = new SparkConf().setMaster("local").setAppName("SparkSQL")
val sc = new SparkContext(conf)

第一行的作用是设置了 master 为 本地local,并且应用app名叫做 SparkSQL。
分布式集群分为 master 与 slaves(workers)。主机作为调控中介的作用存在着,slaves是子机结点。拓展:master 和 slaves 成双成对多好啊,对吧?而且好好地使用了很久了。但是呢,slaves 是仆人的意思,这就引起了一些文化人士的反对意见,认为定义中含有歧视的成分,被要求修改!

第二行的意思是 new 了一个 SparkContext 。SparkContext 在Spark应用程序的执行过程中起着主导作用,它负责与程序和spark集群进行交互,包括申请集群资源、创建RDD、accumulators及广播变量等。

每次执行 spark-shell 的时候,都会自动帮我们创建这个 sc (SparkContext),后面我们就可以在命令行中直接使用它了。当然你也可以自己重新创建。


3. 如何使用 spark-shell?Scala编程语言

原生的 spark-shell 只能使用 Scala 或者 Python 进行操作。我们使用的是 Scala 进行连接 Amazon S3。使用Python操作感觉很多坑,很多包都是没有的,需要自己导入,感兴趣的读者可以自己去试试。

使用 Scala 在 spark-shell 中连接 s3

//set the configuration
sc.hadoopConfiguration.set("fs.s3a.access.key", "your access key")
sc.hadoopConfiguration.set("fs.s3a.secret.key", "your secret key")
sc.hadoopConfiguration.set("fs.s3a.endpoint", "endpoint:port ")
sc.hadoopConfiguration.set("fs.s3a.connection.ssl.enabled", "false")

//read
val myRdd = sc.textFile("s3a://bucketms/notebook/text")  
//write
val myRDD.saveAsTextFile("s3a://bucketms/notebook/text")  
//count text data num
myRdd.count

access key 和 secret key 可以理解为用户登陆的账号与密码,是由 s3服务器分配的。

endpoint:port 是你准备连接的 s3服务器的 ip地址与端口。

第四行的含义是禁用ssl。


附:使用到的包

需要用到的包要放在
spark 的 jar包 目录下

1. aws java sdk jar包版本(aws服务)

aws-java-sdk-1.11.404.jar
aws-java-sdk-core-1.11.404.jar
aws-java-sdk-s3-1.11.404.jar

2. hadoop aws 包版本(aws服务)

hadoop-aws-3.0.3.jar

3. jackson包版本(数据绑定、注解)

注意 com.fasterxml.jackson 下的 jackon 包!!!
jackson-annotations-2.7.8.jar
jackson-core-2.7.8.jar
jackson-databind-2.7.8.jar

jackson-core-asl-1.9.13.jar
jackson-mapper-asl-1.9.13.jar