【问题标题】:apache spark 1.6+ Failed to load class for data source libsvmapache spark 1.6+ 无法为数据源 libsvm 加载类
【发布时间】:2016-09-19 08:38:22
【问题描述】:

我已经下载了 apache spark 1.6.0/1.6.1 的预编译版本,当我尝试这样做时

     scala> val data = sqlContext.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")

在我的 spark shell 中,我得到了

java.lang.ClassNotFoundException: 加载数据类失败 来源:libsvm

.

我进行了 stackover 流搜索,我看到这个链接 failed-to-load class libsvm 表明它应该适用于 1.6,但不知何故它对我不起作用,我需要做什么才能让它工作?

【问题讨论】:

  • 类似其他栈溢出链接,使用MLUtils是可以的,例如"val examples: RDD[LabeledPoint] = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt")" 有效
  • 可能是类路径问题吗?你是如何启动 spark shell 的?您是否安装了任何其他版本的 Spark 或 Scala?环境 SPARK_HOME 是否设置为某个值(在这种情况下清除它并重试)?您使用的是类 Unix 操作系统吗?
  • 我首先将预编译版本解压缩到一个文件夹中,例如 spark-1.6.1-bin-hadoop2.6,然后我 cd 进入该文件夹,然后通过执行 bin/spark- 启动 spark-shell贝壳。我也用 1.6.0 试试这个,我遇到了同样的问题。问题也发生在 MacOS 和 Linux 上。 (RHEL 6.x)

标签: scala apache-spark apache-spark-sql apache-spark-mllib


【解决方案1】:

我发现我将 SPARK_HOME 环境设置为旧版本,即使 spark-shell 从正确的位置运行,但是一旦你取消设置 SPARK_HOME 环境,它会尝试使用 SPARK_HOME 加载一些库多变的。现在一切正常

【讨论】:

    【解决方案2】:

    确保在 sbt/pom 文件中包含 mllib 依赖项。

    libraryDependencies += "org.apache.spark" %% "spark-mllib" % sparkVersion
    

    【讨论】:

      猜你喜欢
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      相关资源
      最近更新 更多