2017-09-25 70 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是它的前身。顺便说一句,模式推理意味着一次扫描数据只是为了计算出模式,另一次是为了读取数据。最好在代码中声明模式 –