如何将AWS Proxy主机设置为Spark配置

时间:2019-05-21 21:12:21

标签: amazon-web-services apache-spark amazon-s3

任何想法如何设置aws代理主机和区域以激发会话或激发上下文。

我能够在AWS Javasdk代码中进行设置,并且工作正常。

      ClientConfiguration clientConfig = new ClientConfiguration();
      clientConfig.setProxyHost("aws-proxy-qa.xxxxx.organization.com");
        clientConfig.setProxyPort(8099));

      AmazonS3ClientBuilder.standard()
        .withRegion(getAWSRegion(Regions.US_WEST_2)
        .withClientConfiguration(clientConfig) //Setting aws proxy host

因为我正在读取一个与emr区域不同的区域的s3文件,所以可以帮助我设置相同的东西来激发上下文(区域和代理)。

1 个答案:

答案 0 :(得分:2)

将基于fs.s3a.access.key和fs.s3a.secret.key区域自动确定。

就像其他s3属性一样 将此设置为sparkConf

/**
      * example getSparkSessionForS3
      * @return
      */
    def getSparkSessionForS3():SparkSession = {
  val conf = new SparkConf()
    .setAppName("testS3File")
    .set("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
    .set("spark.hadoop.fs.s3a.endpoint", "yourendpoint")
    .set("spark.hadoop.fs.s3a.connection.maximum", "200")
    .set("spark.hadoop.fs.s3a.fast.upload", "true")
    .set("spark.hadoop.fs.s3a.connection.establish.timeout", "500")
    .set("spark.hadoop.fs.s3a.connection.timeout", "5000")
    .set("spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version", "2")
    .set("spark.hadoop.com.amazonaws.services.s3.enableV4", "true")
    .set("spark.hadoop.com.amazonaws.services.s3.enforceV4", "true")
    .set("spark.hadoop.fs.s3a.proxy.host","yourhost") 
  val spark = SparkSession
    .builder()
    .config(conf)
    .getOrCreate()
  spark
}