我将输入和输出文件夹作为参数从网页传递到mapreduce字数计算程序。获取以下错误:http状态500-请求处理失败;嵌套异常为java.lang.illegalargumentexception:必须将aws访问密钥id和机密访问密钥分别指定为s3n url的用户名或密码,或者通过设置fs.s3n.awsaccesskeyid或fs.s3n.awssecretaccesskey属性(分别)来指定。
8aqjt8rx1#
我建议你用这个:
hadoop distcp \ -Dfs.s3n.awsAccessKeyId=<your_access_id> \ -Dfs.s3n.awsSecretAccessKey=<your_access_key> \ s3n://origin hdfs://destinations
它还可以作为解决键中出现斜杠的方法。带有id和访问密钥的参数必须按以下顺序提供:在disctcp之后,在origin之前
fnvucqvd2#
文件格式如下:http://wiki.apache.org/hadoop/amazons3
s3n://ID:SECRET@BUCKET/Path
a5g8bdjr3#
通常不建议将aws凭证作为amazons3nurl的一部分传入,这是出于安全考虑的。尤其是当代码被推送到存储库中的服务(比如github)时。理想情况下,在conf/core-site.xml中将您的凭据设置为:
<configuration> <property> <name>fs.s3n.awsAccessKeyId</name> <value>XXXXXX</value> </property> <property> <name>fs.s3n.awsSecretAccessKey</name> <value>XXXXXX</value> </property> </configuration>
或者在您的计算机上重新安装awscli。
pip install awscli
yk9xbfzb4#
创建文件 core-site.xml 把它放在类路径中。在文件中指定
core-site.xml
<configuration> <property> <name>fs.s3.awsAccessKeyId</name> <value>your aws access key id</value> <description> aws s3 key id </description> </property> <property> <name>fs.s3.awsSecretAccessKey</name> <value>your aws access key</value> <description> aws s3 key </description> </property> </configuration>
默认情况下,hadoop指定两个资源,从类路径按顺序加载: core-default.xml :hadoop的只读默认值 core-site.xml :给定hadoop安装的特定于站点的配置
core-default.xml
crcmnpdw5#
对于Pypark初学者:
从下载jarhttps://mvnrepository.com/artifact/org.apache.hadoop/hadoop-aws,放入spark jars文件夹那你就可以了
export AWS_ACCESS_KEY_ID=export AWS_SECRET_ACCESS_KEY=
sc._jsc.hadoopConfiguration().set("fs.s3.awsAccessKeyId", access_key) sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", access_key) sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", access_key) sc._jsc.hadoopConfiguration().set("fs.s3.awsSecretAccessKey", secret_key) sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", secret_key) sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", secret_key) sc._jsc.hadoopConfiguration().set("fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") sc._jsc.hadoopConfiguration().set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") sc._jsc.hadoopConfiguration().set("fs.s3.impl", "org.apache.hadoop.fs.s3.S3FileSystem")
import sys from random import random from operator import add from pyspark.sql import SparkSession from pyspark.conf import SparkConf if __name__ == "__main__": """ Usage: S3 sample """ access_key = '<access-key>' secret_key = '<secret-key>' spark = SparkSession\ .builder\ .appName("Demo")\ .getOrCreate() sc = spark.sparkContext # remove this block if use core-site.xml and env variable sc._jsc.hadoopConfiguration().set("fs.s3.awsAccessKeyId", access_key) sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", access_key) sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", access_key) sc._jsc.hadoopConfiguration().set("fs.s3.awsSecretAccessKey", secret_key) sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", secret_key) sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", secret_key) sc._jsc.hadoopConfiguration().set("fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") sc._jsc.hadoopConfiguration().set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") sc._jsc.hadoopConfiguration().set("fs.s3.impl", "org.apache.hadoop.fs.s3.S3FileSystem") # fetch from s3, returns RDD csv_rdd = spark.sparkContext.textFile("s3n://<bucket-name>/path/to/file.csv") c = csv_rdd.count() print("~~~~~~~~~~~~~~~~~~~~~count~~~~~~~~~~~~~~~~~~~~~") print(c) spark.stop()
5条答案
按热度按时间8aqjt8rx1#
我建议你用这个:
它还可以作为解决键中出现斜杠的方法。带有id和访问密钥的参数必须按以下顺序提供:在disctcp之后,在origin之前
fnvucqvd2#
文件格式如下:http://wiki.apache.org/hadoop/amazons3
a5g8bdjr3#
通常不建议将aws凭证作为amazons3nurl的一部分传入,这是出于安全考虑的。尤其是当代码被推送到存储库中的服务(比如github)时。理想情况下,在conf/core-site.xml中将您的凭据设置为:
或者在您的计算机上重新安装awscli。
yk9xbfzb4#
创建文件
core-site.xml
把它放在类路径中。在文件中指定默认情况下,hadoop指定两个资源,从类路径按顺序加载:
core-default.xml
:hadoop的只读默认值core-site.xml
:给定hadoop安装的特定于站点的配置crcmnpdw5#
对于Pypark初学者:
准备
从下载jarhttps://mvnrepository.com/artifact/org.apache.hadoop/hadoop-aws
,放入spark jars文件夹
那你就可以了
1. hadoop配置文件
core-site.xml
```export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
2. Pypark配置
示例