在Amazon EMR上设置Spark类路径

时间:2015-05-27 23:34:56

标签: hadoop amazon-s3 apache-spark emr

我正在尝试使用Hadoop 2.4和Spark 1.3.1在EMR(AMI 3.6)上运行一些简单的工作。我手动安装了Spark而没有引导脚本。目前我正在尝试从S3读取和处理数据,但似乎我在类路径上缺少无数个罐子。

在spark-shell上运行命令。使用以下命令启动shell:

spark-shell --jars jar1.jar,jar2.jar...

命令在shell上运行:

val lines = sc.textFile("s3://folder/file.gz")
lines.collect()

错误总是如下:"未找到类xyz"。找到所需的jar并将其添加到类路径后,我将再次收到此错误,但在错误消息中使用不同的类名。

使用(压缩和未压缩)S3文件需要一组jar吗?

2 个答案:

答案 0 :(得分:2)

通过遵循AWS GitHub repo https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark中的逻辑,我能够找出我的类路径所需的jar。

install-spark和install-spark-script.py文件包含将jar复制到SPARK_CLASSPATH变量(spark-env.sh)使用的新“classpath”目录的逻辑。

我个人遗失的罐子位于/ usr / share / aws / emr / emrfs / lib /和/ usr / share / aws / emr / lib /

答案 1 :(得分:0)

您似乎没有从spark-shell中导入正确的库。

这样做:

import path.to.Class

或更有可能,如果你想导入RDD类,请说:

import org.apache.spark.rdd.RDD