AWS EMR和Spark 1.0.0

Era*_*ras 8 amazon-web-services elastic-map-reduce apache-spark

在尝试在AWS EMR集群上使用Spark时,我最近遇到了一些问题.

我正在使用以下内容创建集群:

./elastic-mapreduce --create --alive \
--name "ll_Spark_Cluster" \
--bootstrap-action s3://elasticmapreduce/samples/spark/1.0.0/install-spark-shark.rb \
--bootstrap-name "Spark/Shark" \
--instance-type m1.xlarge \
--instance-count 2 \
--ami-version 3.0.4
Run Code Online (Sandbox Code Playgroud)

问题是每当我尝试从S3获取数据时,我都会遇到异常.所以,如果我启动spark-shell并尝试类似:

val data = sc.textFile("s3n://your_s3_data")
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

WARN storage.BlockManager: Putting block broadcast_1 failed
java.lang.NoSuchMethodError:
com.google.common.hash.HashFunction.hashInt(I)Lcom/google/common/hash/HashCode;
Run Code Online (Sandbox Code Playgroud)

Era*_*ras 9

这个问题是由番石榴图书馆引起的,

AMI上的版本是11,而spark需要版本14.

我从AWS编辑了bootstrap脚本以安装spark 1.0.2并在引导操作期间更新guava库,您可以在此处获取要点:

https://gist.github.com/tnbredillet/867111b8e1e600fa588e

即使更新了番石榴,我仍然有一个问题.当我试图在S3上保存数据时,我抛出异常

lzo.GPLNativeCodeLoader - Could not load native gpl library
java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path
Run Code Online (Sandbox Code Playgroud)

我通过将hadoop本机库添加到java.library.path来解决这个问题.当我开始工作时,我添加了选项

 -Djava.library.path=/home/hadoop/lib/native 
Run Code Online (Sandbox Code Playgroud)

或者,如果我通过spark-submit运行工作,我添加

--driver-library-path /home/hadoop/lib/native 
Run Code Online (Sandbox Code Playgroud)

论点.