在 Amazon EMR 上设置 Spark 类路径
Setting Spark Classpath on Amazon EMR
我正在尝试 运行 使用 Hadoop 2.4 和 Spark 1.3.1 在 EMR (AMI 3.6) 上执行一些简单的作业。我在没有 bootstrap 脚本的情况下手动安装了 Spark。目前我正在尝试读取和处理来自 S3 的数据,但似乎我在 class 路径上遗漏了无数个罐子。
运行 spark-shell 命令。开始 shell 使用:
spark-shell --jars jar1.jar,jar2.jar...
运行 在 shell 上的命令:
val lines = sc.textFile("s3://folder/file.gz")
lines.collect()
错误总是类似于:"Class xyz not found"。找到所需的 jar 并将其添加到 class 路径后,我将再次收到此错误,但错误消息中的 class 名称不同。
是否需要一组 jar 来处理(压缩和未压缩的)S3 文件?
您似乎没有从 spark-shell.
中导入正确的库
这样做:
import path.to.Class
或者如果你想导入 RDD class 更有可能,按说:
import org.apache.spark.rdd.RDD
我能够按照 AWS GitHub 存储库 https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark 中的逻辑找出我的类路径所需的 jar。
install-spark 和 install-spark-script.py 文件包含将 jar 复制到 SPARK_CLASSPATH 变量使用的新 'classpath' 目录的逻辑(spark-env.sh).
我个人丢失的罐子位于 /usr/share/aws/emr/emrfs/lib/ 和 /usr/share/aws/emr/lib/
我正在尝试 运行 使用 Hadoop 2.4 和 Spark 1.3.1 在 EMR (AMI 3.6) 上执行一些简单的作业。我在没有 bootstrap 脚本的情况下手动安装了 Spark。目前我正在尝试读取和处理来自 S3 的数据,但似乎我在 class 路径上遗漏了无数个罐子。
运行 spark-shell 命令。开始 shell 使用:
spark-shell --jars jar1.jar,jar2.jar...
运行 在 shell 上的命令:
val lines = sc.textFile("s3://folder/file.gz")
lines.collect()
错误总是类似于:"Class xyz not found"。找到所需的 jar 并将其添加到 class 路径后,我将再次收到此错误,但错误消息中的 class 名称不同。
是否需要一组 jar 来处理(压缩和未压缩的)S3 文件?
您似乎没有从 spark-shell.
中导入正确的库这样做:
import path.to.Class
或者如果你想导入 RDD class 更有可能,按说:
import org.apache.spark.rdd.RDD
我能够按照 AWS GitHub 存储库 https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark 中的逻辑找出我的类路径所需的 jar。
install-spark 和 install-spark-script.py 文件包含将 jar 复制到 SPARK_CLASSPATH 变量使用的新 'classpath' 目录的逻辑(spark-env.sh).
我个人丢失的罐子位于 /usr/share/aws/emr/emrfs/lib/ 和 /usr/share/aws/emr/lib/