我通过pip install pyspark
安装了spark
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.config('spark.driver.extraClassPath', '/home/ubuntu/spark/jars/aws-java-sdk-1.11.335.jar:/home/ubuntu/spark/jars/hadoop-aws-2.8.4.jar') \
.appName("cluster").getOrCreate()
df = spark.read.load('s3a://bucket/path/to/file')
~/miniconda3/envs/audience/lib/python3.6/site-packages/py4j/protocol.py in get_return_value(应答,gateway_client,target_id,name)318 Rise Py4JJavaError(319“调用{0}{1}{2}时出错.\n”。-->320格式(target_id,“.”,name),value)321 else:322 Rise Py4JError(
如果我将s3a
更改为s3
或s3n
,它将请求aws访问密钥。但是,我已经在IAM中给出了ec2实例Amazons3FullAccess
。
IllegalArgumentException:“必须分别通过设置fs.s3.awsAccessKeyID和fs.s3.awsSecretAccessKey属性来指定AWS访问密钥ID和秘密访问密钥。”
如有任何帮助,我们将不胜感激。
您需要一种向脚本公开AWS凭据的方法。
下面使用botocore的示例可能会超出范围,但使您不必滚动自己的AWS配置或凭据解析器。
首先,
from pyspark.sql import SparkSession
import botocore.session
session = botocore.session.get_session()
credentials = session.get_credentials()
spark = (
SparkSession
.builder
.config(
'spark.driver.extraClassPath',
'/home/ubuntu/spark/jars/aws-java-sdk-1.11.335.jar:'
'/home/ubuntu/spark/jars/hadoop-aws-2.8.4.jar')
.config('fs.s3a.access.key', credentials.access_key)
.config('fs.s3a.secret.key', credentials.secret_key)
.appName("cluster")
.getOrCreate()
)
df = spark.read.load('s3a://bucket/path/to/file')
编辑
在使用s3n文件系统客户端时,身份验证属性如下所示
.config('fs.s3n.awsAccessKeyId', credentials.access_key)
.config('fs.s3n.awsSecretAccessKey', credentials.secret_key)
我正在从Cloudera包裹中运行带有Spark 0.9.0的CDH 4.4。 我有一堆Avro文件是通过Pig的AvroStorage UDF创建的。我想在 Spark 中加载这些文件,使用通用记录或载入 Avro 文件的架构。到目前为止,我已经尝试过这个: 这适用于一个文件,但它不能扩展——我将所有数据加载到本地RAM中,然后从那里跨spark节点分发。
我一直在尝试使用Spark中的加载本地文件。 我已经读过[问题]:如何在sc.textfile中加载本地文件,而不是HDFS Centos 7.0上中有本地文件 使用时,出现如下错误。 16/12/27 12:15:56警告TaskSetManager:stage 5.0中丢失任务0.0(TID 36,):java.io.FileNotFoundException:File File:/home/
问题内容: 我想将Spark参数(例如输入文件,输出文件)存储到Java属性文件中,然后将该文件传递到Spark Driver中。我正在使用spark- submit提交作业,但是找不到参数来传递属性文件。你有什么建议吗? 问题答案: 在这里,我找到了一种解决方案: props文件 :(mypropsfile.conf)// 注意:密钥的前缀为“ spark”。 否则道具将被忽略。 发射 如何调用
我是Spark的新手,我正在尝试使用Spark从文件中读取CSV数据。以下是我正在做的: 我希望这个调用会给我一个文件前两列的列表,但我遇到了以下错误: 索引器中第1行的文件“”:列表索引超出范围 虽然我的CSV文件不止一列。
当我在spack-2.2.0中加载xml文件时,如下所示: 它向我展示了一个错误: JAVAlang.ClassNotFoundException:未能找到数据源:xml。请在http://spark.apache.org/third-party-projects.html在org。阿帕奇。火花sql。处决数据源。数据源$。org上的lookUpdateSource(DataSource.scal
我最近在Android Studio中又安装了一个Android SDK,即SDK版本4.4(API级别19),在与我的项目一起使用后,它在项目的文件夹()中添加了一组文件夹。 我既不明白为什么,也不明白如何使用它们。 我在SO上读到另一个关于它的问题。 答案是: 我还是不明白为什么要这样做。 为什么我们不能把应用程序图标也放在文件夹中呢? 此外,如果只应将应用程序图标放置在文件夹中,我如何创建其