【问题标题】:Why Zeppelin notebook is not able to connect to S3为什么 Zeppelin 笔记本无法连接到 S3
【发布时间】:2015-09-02 06:43:04
【问题描述】:

我已经在我的 aws EC2 机器上安装了 Zeppelin 以连接到我的 spark 集群。

Spark 版本: 独立: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 配置文件“-Phadoop-1.0.4”构建时,它会发出警告说它不存在。

我也尝试过this spark 网站中提到的-Phadoop-1。但得到了同样的错误。 1.x 到 2.1.x hadoop-1

请让我知道我在这里缺少什么。

【问题讨论】:

    标签: apache-spark apache-zeppelin


    【解决方案1】:

    以下安装对我有用(也花了很多天来解决这个问题):

    1. 在 EC2 集群上设置 Hadoop 2.3 的 Spark 1.3.1 预构建

    2. git clone https://github.com/apache/incubator-zeppelin.git(日期:25.07.2015)

    3. 通过以下命令安装了zeppelin(属于https://github.com/apache/incubator-zeppelin上的说明):

      mvn clean package -Pspark-1.3 -Dhadoop.version=2.3.0 -Phadoop-2.3 -DskipTests

    4. 端口通过“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 设置 ma​​ster=local[*](而不是使用 spark://master:7777)

    【讨论】:

      【解决方案2】:

      对我来说,它分两步完成-

      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 协议和访问密钥和密钥。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-10
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        • 2016-08-14
        • 2021-02-16
        • 2018-05-08
        • 2020-11-17
        相关资源
        最近更新 更多