JavaLDAExample不起作用

时间:2017-01-29 22:41:06

标签: java hadoop apache-spark apache-spark-mllib lda

我是Spark的新手,我正在使用spark-2.1.0-bin-hadoop2.7

我已经检查了它的WordsCount示例,它工作正常,但JavaLDAExample没有。

我检查了他们的源代码here。 WordsCount需要一个url作为它的数据的参数,我已经通过hadoop上的hdfs创建了我的数据,所以我发送了像hdfs://master:9000/input/data/test.txt这样的路径。

但JavaLDAExample使用静态路径Dataset<Row> dataset = spark.read().format("libsvm").load("data/mllib/sample_lda_libsvm_data.txt");,我不知道我应该在哪里移动我的文件。

我得到了error(第51,59行)。你能帮我解决一下吗?

2 个答案:

答案 0 :(得分:0)

从日志中我可以看到Spark正在寻找/home/unique/spark-2.1.0-bin-hadoop2.7/work/driver-20170130015037-0017/data/mllib/sample_lda_libsvm_data.txt中的数据。

我认为最好的办法是修改该路径并使用修改后的路径构建新jar。然后,如果你愿意,你可以将其指向hdfs。

如果您不想这样做,只是想快速测试并玩游戏,那么您应该能够在本地Spark shell中运行该代码。当您下载Spark并将其解压缩时,Spark目录应包含另一个名为data的目录。可以从那里找到该示例数据。因此,您可以使用相对路径将其加载到Spark shell:

scala> spark.read.format("libsvm").load("data/mllib/sample_lda_libsvm_data.txt");

答案 1 :(得分:0)

这是一些示例代码,提供了一些样本数据集,LDA的样本数据集可在$ SPARK_HOME / data / mllib /。本地获取。

此处样本数据是静态的,随包一起提供。

如果您想要提供数据集,则有三个选项:

  1. 在类似的行上编写您自己的LDA应用程序并更改第45行的代码: Dataset<Row> dataset = spark.read().format("libsvm") .load("data/mllib/sample_lda_libsvm_data.txt"); Dataset<Row> dataset = spark.read().format("libsvm") .load("YOUR/DATA_SETS/LOCATION");
  2. 使用相同的代码并更改第45行的路径: Dataset<Row> dataset = spark.read().format("libsvm") .load("data/mllib/sample_lda_libsvm_data.txt"); Dataset<Row> dataset = spark.read().format("libsvm") .load("YOUR/DATA_SETS/LOCATION");

  3. 您可以将文件置于$ SPARK_HOME / data / mllib本地,然后将文件重命名为sample_lda_libsvm_data.txt。

  4. 在前两种情况下,您必须构建/创建新的jar代码,然后使用它并使用新的jar来执行代码。

    如果您有任何进一步的问题,请与我们联系。

    此致

    ~Kedar Dixit