我在我的aws EC2机器上安装了Zeppelin以连接到我的火花群。
Spark版本: Standalone:spark-1.2.1-bin-hadoop1.tgz
当我尝试在我的用例中访问S3中的文件时,我能够连接到spark群集但是会出现以下错误。
代码:
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","YOUR_SEC_KEY")
val file = "s3n://<bucket>/<key>"
val data = sc.textFile(file)
data.count
file: String = s3n://<bucket>/<key>
data: org.apache.spark.rdd.RDD[String] = s3n://<bucket>/<key> MappedRDD[1] at textFile at <console>:21
ava.lang.NoSuchMethodError: org.jets3t.service.impl.rest.httpclient.RestS3Service.<init>(Lorg/jets3t/service/security/AWSCredentials;)V
at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.initialize(Jets3tNativeFileSystemStore.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
我按照以下命令构建了Zeppelin:
mvn clean package -Pspark-1.2.1 -Dhadoop.version=1.0.4 -DskipTests
当我尝试使用hadoop profile&#34; -Phadoop-1.0.4&#34;进行构建时,它会警告它不存在。
我也试过this spark网站中提到的-Phadoop-1。但得到了同样的错误。 1.x到2.1.x hadoop-1
请告诉我这里缺少的东西。
答案 0 :(得分:2)
以下安装对我有用(花了很多天才解决问题):
在EC2群集上为Hadoop 2.3设置预构建Spark 1.3.1预装
git clone https://github.com/apache/incubator-zeppelin.git(日期:2015年7月25日)
通过以下命令安装zeppelin(属于https://github.com/apache/incubator-zeppelin上的说明):
mvn clean package -Pspark-1.3 -Dhadoop.version = 2.3.0 -Phadoop-2.3 -DskipTests
通过“conf / zeppelin-site.xml”将端口更改为8082(Spark使用端口8080)
在此安装步骤之后,我的笔记本使用了S3文件:
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "xxx")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","xxx")
val file = "s3n://<<bucket>>/<<file>>"
val data = sc.textFile(file)
data.first
我认为在Zeppelin版本0.5.0中没有完全解决S3问题,所以克隆实际的git-repo为我做了。
重要信息:这项工作仅适用于我使用zeppelin spark-interpreter设置 master = local [*] (而不是使用spark:// master:7777)
答案 1 :(得分:-1)
对我而言,它分两步完成 -
1. creating sqlContext -
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
2. reading s3 files like this. -
val performanceFactor = sqlContext.
read. parquet("s3n://<accessKey>:<secretKey>@mybucket/myfile/")
您需要提供的访问密钥和密钥。 #2我在路径中使用s3n协议和访问密钥。