我知道https://wiki.apache.org/hadoop/AmazonS3的存在以及以下词语:
S3 Native FileSystem(URI scheme:s3n)用于在S3上读取和写入常规文件的本机文件系统.此文件系统的优点是您可以访问使用其他工具编写的S3上的文件.相反,其他工具可以访问使用Hadoop编写的文件.缺点是S3强加的文件大小限制为5GB.
S3A(URI方案:s3a)S3 Native的继承者s3n fs,S3a:系统使用亚马逊的库与S3交互.这允许S3a支持更大的文件(不超过5GB限制),更高性能的操作等等.文件系统旨在替代S3 Native的/后继者:只需替换URL模式,也可以从s3a访问从s3n:// URL访问的所有对象.
S3 Block FileSystem(URI scheme:s3)由S3支持的基于块的文件系统.文件存储为块,就像它们在HDFS中一样.这允许有效地实现重命名.此文件系统要求您为文件系统专用存储桶 - 不应使用包含文件的现有存储桶,也不应将其他文件写入同一存储桶.此文件系统存储的文件可能大于5GB,但它们不能与其他S3工具互操作.
为什么URI上的字母更改会产生这样的差异?例如
val data = sc.textFile("s3n://bucket-name/key")
Run Code Online (Sandbox Code Playgroud)
至
val data = sc.textFile("s3a://bucket-name/key")
Run Code Online (Sandbox Code Playgroud)
这种变化背后的技术差异是什么?有什么好文章我可以读到这个吗?
SparkContext, JavaSparkContext, SQLContext和之间有什么区别SparkSession?SparkSession?转换或创建Context ?SparkSession吗?SQLContext,SparkContext和JavaSparkContext也SparkSession?parallelize在SparkContext和中有不同的行为JavaSparkContext.他们是如何表现的SparkSession?如何使用SparkSession?创建以下内容?
RDDJavaRDDJavaPairRDDDataset有没有一种方法可以将a JavaPairRDD转换为a Dataset或Dataseta JavaPairRDD?
我想通过Spark(pyspark,真的)从我的(本地)机器读取一个S3文件.现在,我不断收到身份验证错误
java.lang.IllegalArgumentException:必须将AWS Access Key ID和Secret Access Key指定为s3n URL的用户名或密码,或者分别设置fs.s3n.awsAccessKeyId或fs.s3n.awsSecretAccessKey属性.
我在这里和网上到处寻找,尝试了很多东西,但显然S3在过去一年或几个月里一直在变化,所有方法都失败了但是一个:
pyspark.SparkContext().textFile("s3n://user:password@bucket/key")
Run Code Online (Sandbox Code Playgroud)
(注意s3n[ s3不起作用]).现在,我不想使用带有用户和密码的URL,因为它们可以出现在日志中,我也不知道如何从~/.aws/credentials文件中获取它们.
那么,我如何使用来自现在标准 ~/.aws/credentials文件的AWS凭证(或者更好地,pyspark)从S3本地读取(理想情况下,不将凭证复制到另一个配置文件)?
PS:我想os.environ["AWS_ACCESS_KEY_ID"] = …和os.environ["AWS_SECRET_ACCESS_KEY"] = …,也没有工作.
PPS:我不知道在哪里"设置fs.s3n.awsAccessKeyId或fs.s3n.awsSecretAccessKey属性"(Google没有提出任何建议).不过,我也尝试设置这些方法很多:SparkContext.setSystemProperty(),sc.setLocalProperty(),和conf = SparkConf(); conf.set(…); conf.set(…); sc = SparkContext(conf=conf).没有任何效果.
如何将S3存储桶中的一堆文件加载到单个PySpark数据帧中?我在EMR实例上运行。如果文件是本地文件,则可以使用SparkContext textFile方法。但是,当文件位于S3上时,如何使用boto3将多个类型(CSV,JSON等)的多个文件加载到单个数据框中进行处理?
amazon-s3 ×3
apache-spark ×3
pyspark ×2
aws-sdk ×1
boto3 ×1
credentials ×1
java ×1
rdd ×1
scala ×1