如何设置 PySpark 以使用 Hadoop 在本地从 S3 读取数据?
How to setup PySpark to locally read data from S3 using Hadoop?
我遵循了 this blog post 这建议使用:
from pyspark import SparkConf
from pyspark.sql import SparkSession
conf = SparkConf()
conf.set('spark.jars.packages', 'org.apache.hadoop:hadoop-aws:3.2.0')
conf.set('spark.hadoop.fs.s3a.aws.credentials.provider', 'org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider')
conf.set('spark.hadoop.fs.s3a.access.key', <access_key>)
conf.set('spark.hadoop.fs.s3a.secret.key', <secret_key>)
conf.set('spark.hadoop.fs.s3a.session.token', <token>)
spark = SparkSession.builder.config(conf=conf).getOrCreate()
我用它来配置 PySpark,它可以直接从我的本地计算机从 S3 获取数据。
但是我从 AWS 中发现这个 about the use of s3a
, s3n
or s3
and one of the says advises against using s3a
. Also I found this guide 也不鼓励使用 s3a
:
Previously, Amazon EMR used the s3n and s3a file systems. While both still work, we recommend that you use the s3 URI scheme for the best performance, security, and reliability.
所以我决定尝试寻找如何在 PySpark 和 Hadoop 中实现 s3
的使用,但我发现 Hadoop 中的 this guide 提到它只支持 s3a
官方:
There other Hadoop connectors to S3. Only S3A is actively maintained by the Hadoop project itself.
博客 post 中提到的方法有效,但它是这种情况的最佳选择吗?还有其他配置方法吗?
从本地计算机访问 S3 的最佳方法是什么?
关于 EMR 的 AWS 文档。你的本地系统不是EMR,所以完全忽略它。
使用 ASF-developed s3a 连接器并查看 hadoop docs on how to use it,而不是过时的堆栈溢出 posts 中的示例。 {IE。如果文档说的内容与 4 y.o 相矛盾。 post 说,看文档。甚至来源)
我遵循了 this blog post 这建议使用:
from pyspark import SparkConf
from pyspark.sql import SparkSession
conf = SparkConf()
conf.set('spark.jars.packages', 'org.apache.hadoop:hadoop-aws:3.2.0')
conf.set('spark.hadoop.fs.s3a.aws.credentials.provider', 'org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider')
conf.set('spark.hadoop.fs.s3a.access.key', <access_key>)
conf.set('spark.hadoop.fs.s3a.secret.key', <secret_key>)
conf.set('spark.hadoop.fs.s3a.session.token', <token>)
spark = SparkSession.builder.config(conf=conf).getOrCreate()
我用它来配置 PySpark,它可以直接从我的本地计算机从 S3 获取数据。
但是我从 AWS 中发现这个 s3a
, s3n
or s3
and one of the s3a
. Also I found this guide 也不鼓励使用 s3a
:
Previously, Amazon EMR used the s3n and s3a file systems. While both still work, we recommend that you use the s3 URI scheme for the best performance, security, and reliability.
所以我决定尝试寻找如何在 PySpark 和 Hadoop 中实现 s3
的使用,但我发现 Hadoop 中的 this guide 提到它只支持 s3a
官方:
There other Hadoop connectors to S3. Only S3A is actively maintained by the Hadoop project itself.
博客 post 中提到的方法有效,但它是这种情况的最佳选择吗?还有其他配置方法吗?
从本地计算机访问 S3 的最佳方法是什么?
关于 EMR 的 AWS 文档。你的本地系统不是EMR,所以完全忽略它。
使用 ASF-developed s3a 连接器并查看 hadoop docs on how to use it,而不是过时的堆栈溢出 posts 中的示例。 {IE。如果文档说的内容与 4 y.o 相矛盾。 post 说,看文档。甚至来源)