大數據BigData之spark如何讀取Amazon s3桶的數據?


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章