2017-09-25 71 views
1

任何有關如何使用scala讀取aws s3的想法。我試過這個鏈接Spark Scala代碼來讀取DSX中的aws s3存儲

https://www.cloudera.com/documentation/enterprise/5-5-x/topics/spark_s3.html

,但不能得到它的工作。我可以在數據磚頭這樣做相同,但與DSX它不工作等

IBM已經證明了蟒蛇在這裏,但沒有一個步驟斯卡拉 - https://datascience.ibm.com/blog/use-ibm-data-science-experience-to-read-and-write-data-stored-on-amazon-s3/

spark.sparkContext.hadoopConfiguration.set(「fs.s3n .impl「,」org.apache.hadoop.fs.s3native.NativeS3FileSystem「) spark.sparkContext.hadoopConfiguration.set(」fs.s3n.awsAccessKeyId「,」xyz「) spark.sparkContext.hadoopConfiguration.set(」fs .s3n.awsSecretAccessKey「,」abc「)

val df_data_1 = spark.read.format(」csv「)。option(」header「,」true「).load(」s3a:// defg/retail- data/by-day/*。csv「) df_data _1.take(5)

+0

你想使用火花從s3讀?如果是的話,更新你的標題和標籤。同時發佈你寫的代碼不起作用 – prayagupd

回答

1

不知道使用本機(s3n)vs s3a是否有任何區別。 但s3a工作正常。

import org.apache.spark.sql.SparkSession 

val spark = SparkSession. 
    builder(). 
    getOrCreate() 


val hconf = spark.sparkContext.hadoopConfiguration 
hconf.set("fs.s3a.access.key", "XXXXXXXXX") 
hconf.set("fs.s3a.secret.key", "XXXXXXXXX") 


val dfData1 = spark. 
    read.format("org.apache.spark.sql.execution.datasources.csv.CSVFileFormat"). 
    option("header", "true"). 
    option("inferSchema", "true"). 
    load("s3a://charlesbuckets31/users.csv") 
dfData1.show(5) 

Output

感謝, 查爾斯。

+0

S3n和S3a之間的區別是顯着的,因爲在「s3a是和將被維護」; s3n是它的前身。順便說一句,模式推理意味着一次掃描數據只是爲了計算出模式,另一次是爲了讀取數據。最好在代碼中聲明模式 –