我正在尝试使用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吗?
答案 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