文章目录
- 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