hadoop - 为什么 Hadoop 不尊重 pyspark 中设置的 'spark.hadoop.fs' 属性?

标签 hadoop apache-spark amazon-s3 properties configuration

<分区>

我希望能够动态设置我的 spark-defaults.conf 中的三个属性:

  • spark.driver.maxResultSize
  • spark.hadoop.fs.s3a.access.key
  • spark.hadoop.fs.s3a.secret.key

这是我的尝试:

from pyspark import SparkConf
from pyspark.sql import SparkSession

conf = (SparkConf()
        .setMaster(spark_master)
        .setAppName(app_name)
        .set('spark.driver.maxResultSize', '5g')
        .set('spark.hadoop.fs.s3a.access.key', '<access>')\
        .set('spark.hadoop.fs.s3a.secret.key', '<secret>)
        )

spark = SparkSession.builder.\
    config(conf=conf).\
    getOrCreate()

print(spark.conf.get('spark.driver.maxResultSize'))
print(spark.conf.get('spark.hadoop.fs.s3a.access.key'))
print(spark.conf.get('spark.hadoop.fs.s3a.secret.key'))

spark.stop()

这是我得到的输出:

5g
<access>
<secret>

但是,当我尝试使用此配置读取 S3 上的 csv 文件时,出现权限被拒绝错误。

如果我通过环境变量设置凭据,我就能够读取该文件。

为什么 Hadoop 不尊重以这种方式指定的凭据?

更新:

我知道与在 pyspark 中设置 Hadoop 属性相关的其他问答。

在这里,我试图为后代记录下您是如何被愚弄的,以为您可以通过 spark.hadoop.* 动态设置它们,因为这是您用来设置这些属性的名称spark-defaults.conf,因为当您尝试以这种方式设置它们时不会直接收到错误。

许多站点告诉您“设置 spark.hadoop.fs.s3a.access.key 属性”,但不要指定只有在 中静态设置时才会这样>spark-defaults.conf 并且在 pyspark 中不是动态的。

最佳答案

事实证明,您不能通过以下方式指定 Hadoop 属性:

spark.conf.set('spark.hadoop.<property>', <value>)

但你必须改用:

spark.sparkContext._jsc.hadoopConfiguration().set('<property>', <value>)

我相信你只能使用spark.conf.set()对于 Spark Configuration 上列出的属性页面。

关于hadoop - 为什么 Hadoop 不尊重 pyspark 中设置的 'spark.hadoop.fs' 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42727064/

相关文章:

scala - 将 List[String] 或 Seq[String] 传递给 Spark 中的 groupBy

apache-spark - Spark Streaming 创建许多小文件

java - 使用 AWS S3 SDK 在 S3 和我的数据中心之间传输数据是否安全?

maven - 在Windows 7 32位计算机上安装Hadoop 2.7.1时出错

java - 有没有办法对 Azure 数据工厂中的数据进行分区以填充文件,直到达到最大行值?

hadoop - 查询 Hive 元存储

amazon-web-services - 使用 S3 和 CloudFront 防止图像盗链

image - 使用 AWS Amplify 从 React Native 上传到 S3

python - 如何使用 Python 在 MapReduce 中的 reducer 中输出键值对,以便 1 小时内的时间结束?

hadoop - Spark on Yarn 与 Jdk8