amazon-s3 - 使用 spark 解释器从 Zeppelin 连接 S3

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

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

我已经使用 spark-ec2 中的步骤设置了 spark 集群 此外,我还使用此 blog 中的步骤在 EC2 中设置了齐柏林飞艇。

我在 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 .在答案中说要使用我不想做的本地 Spark 。我想使用我的 EC2 实例中的 spark 集群。

我在这里错过了什么步骤?

最佳答案

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

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

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

关于amazon-s3 - 使用 spark 解释器从 Zeppelin 连接 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760619/

相关文章:

python - 如何将 SQL 数据框中列的单个 MIN 值作为标量返回?

python-3.x - 删除启动消息以更改 Spark 日志级别

apache-spark - Spark 使用 python : How to resolve Stage x contains a task of very large size (xxx KB). 推荐的最大任务大小为 100 KB

python - Boto3 - 如何通过代理连接到 S3?

python - 删除s3文件也会删除文件夹python代码

linux - 加载共享库时出错 : libsqlplus. 所以:无法打开共享对象文件:没有这样的文件或目录

linux - Amazon EC2 实例之间通信的最佳实践是什么?

linux - 我正在 EC2 linux 上从 docker hub 运行 open varnish 镜像,如何启用 varnish 日志记录?

hadoop - 从HDFS加载 Parquet 文件比从S3加载慢。可能是什么原因呢?

amazon-web-services - 使用 s3 上传多个文件