【问题标题】:Spark Scala code to read aws s3 storage in DSX [closed]Spark Scala 代码读取 DSX 中的 aws s3 存储 [关闭]
【发布时间】:2017-09-25 16:32:47
【问题描述】:

关于如何使用 scala 阅读 aws s3 的任何想法。我试过这个链接

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

但无法让它工作。我可以在数据块中这样做,但使用 dsx 时它不起作用等等。

IBM 在此处记录了 python 的步骤,但没有记录 scala 的步骤 - 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)

【问题讨论】:

  • 你想用 spark 从 s3 读取数据吗?如果是这样,请更新您的标题和标签。还发布您编写的不起作用的代码

标签: scala data-science-experience


【解决方案1】:

不确定使用 native(s3n) 与 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)

谢谢, 查尔斯。

【讨论】:

  • S3n 和 S3a 之间的差异很重要,如“s3a 将被维护”; s3n 是它的前身。顺便说一句,模式推断意味着对数据的一次扫描只是为了计算模式,另一次是为了读取。最好在代码中声明架构
猜你喜欢
  • 1970-01-01
  • 2018-10-18
  • 2019-03-25
  • 1970-01-01
  • 2020-01-02
  • 2018-10-11
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
相关资源
最近更新 更多