【问题标题】:Connecting S3 from Zeppelin using spark interpreter使用火花解释器从 Zeppelin 连接 S3
【发布时间】:2015-12-22 00:19:25
【问题描述】:

我正在尝试使用 Spark 和 Zeppelin 进行一些基本分析。

我已经使用spark-ec2 中的步骤设置了 Spark 集群 此外,我还使用此 blog 中的步骤在 EC2 中设置了 zeppelin

我已经在 zeppelin notebook 中使用以下代码添加了我想使用的库

%dep
z.reset()

// Add spark-csv package
z.load("com.databricks:spark-csv_2.10:1.2.0")

// Add jars required for s3 access
z.load("org.apache.hadoop:hadoop-aws:2.6.0")

下面的代码是从 S3 读取 CSV 文件

sc.hadoopConfiguration.set("fs.s3n.impl","org.apache.hadoop.fs.s3native.NativeS3FileSystem")
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId","XXX")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","XXX")

val path = "s3n://XXX/XXX.csv"
val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load(path)

我收到以下异常

java.lang.VerifyError: Bad type on operand stack Exception Details: 
Location: org/apache/hadoop/fs/s3native/Jets3tNativeFileSystemStore.initialize(Ljava/net/URI;Lorg/apache/hadoop/conf/Configuration;)V @38: invokespecial 
Reason: Type 'org/jets3t/service/security/AWSCredentials' (current frame, stack[3]) is not assignable to 'org/jets3t/service/security/ProviderCredentials' 

Current Frame: bci: @38 flags: { } 
locals: { 'org/apache/hadoop/fs/s3native/Jets3tNativeFileSystemStore', 'java/net/URI', 'org/apache/hadoop/conf/Configuration', 'org/apache/hadoop/fs/s3/S3Credentials', 'org/jets3t/service/security/AWSCredentials' } 

stack: { 'org/apache/hadoop/fs/s3native/Jets3tNativeFileSystemStore', uninitialized 32, uninitialized 32, 'org/jets3t/service/security/AWSCredentials' } 
Bytecode: 
0000000: bb00 0259 b700 034e 2d2b 2cb6 0004 bb00 0000010: 0559 2db6 0006 2db6 0007 b700 083a 042a 0000020: bb00 0959 1904 b700 0ab5 000b a700 0b3a 0000030: 042a 1904 b700 0d2a 2c12 0e03 b600 0fb5 0000040: 0010 2a2c 1211 1400 12b6 0014 1400 15b8 0000050: 0017 b500 182a 2c12 1914 0015 b600 1414 0000060: 0015 b800 17b5 001a 2a2c 121b b600 1cb5 0000070: 001d 2abb 001e 592b b600 1fb7 0020 b500 0000080: 21b1 
Exception Handler Table: bci [14, 44] => handler: 47 
Stackmap Table: full_frame(@47,{Object[#191],Object[#192],Object[#193],Object[#194]},{Object[#195]}) same_frame(@55) 
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.createDefaultStore(NativeS3FileSystem.java:334) 
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.initialize(NativeS3FileSystem.java:324) 
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2596) 
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)

我已经调查过How to use Zeppelin to access aws spark-ec2 cluster and s3 buckets 如答案中所述,我已经更改了安全性并能够与 Spark 连接。 sc.version 打印 1.4.0

我还研究了Why Zeppelin notebook is not able to connect to S3。在答案中说使用我不想做的本地火花。我想使用我的 EC2 实例中的 spark 集群。

我错过了什么步骤?

【问题讨论】:

    标签: amazon-s3 amazon-ec2 apache-spark apache-zeppelin


    【解决方案1】:

    您遇到的错误是由于 zeppelin 中的编译版本与运行时集群中可用的版本之间的 hadoop 版本不匹配

    您应该检查 Zeppelin has been built with 的标志,表明您的集群具有正确的版本。

    或者您可以尝试设置HADOOP_HOME env var 指向适当的安装。

    【讨论】:

    • 我已经使用命令 mvn install -DskipTests -Dspark.version=1.4.0 -Dhadoop.version=2.6.0 使用 hadoop 2.6.0 构建了它,并且我使用的是本地 Spark。
    • 我还尝试将 Spark 主页设置为外部 Spark 实例,使用 spark 版本 1.4 和 hadoop 版本 2.6.0。仍然遇到同样的问题
    猜你喜欢
    • 2017-03-16
    • 2019-02-07
    • 2016-12-09
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2018-08-18
    相关资源
    最近更新 更多