问题标签 [apache-spark-mllib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
335 浏览

scala - Spark 程序的行为基于 --master 设置为 local[4] 或 yarn-client 有所不同

我正在使用 movielens 数据集将电影信息加载到 spark 程序中,并使用以下代码片段进行打印

当我使用命令 spark-submit --master local[4] --class "MovieApp" movie-recommender.jar 运行代码时,我得到了预期的输出

*root@philli ml]# /usr/lib/spark/bin/spark-submit --master local[4] --class "MovieApp" movie-recommender_2.10-1.0.jar

14/12/05 00:17:37 WARN NativeCodeLoader:无法为您的平台加载 native-hadoop 库...在适用的情况下使用内置 java 类

电影数量:3883

ID:2020 标题:危险关系 (1988)

ID:2021 标题:沙丘 (1984)

ID:2022 标题:基督的最后诱惑 (1988)

ID:2023 标题:教父:第三部分,The (1990)

ID:2024 标题:Rapture, The (1991)

ID:2025 标题:洛丽塔 (1997)

ID:2026 标题:令人不安的行为 (1998)

ID:2027 标题:黑手党!(1998)

ID:2028 标题:拯救大兵瑞恩 (1998)

ID:2029 标题:比利的好莱坞银幕之吻 (1997)

... *

但是当我使用命令在hadoop集群上运行相同的

spark-submit --master yarn-client --class "MovieApp" movie-recommender.jar 输出不同如下(没有电影细节???)

*[root@philli ml]# /usr/lib/spark/bin/spark-submit --master yarn-client --class "MovieApp" movie-recommender_2.10-1.0.jar

14/12/05 00:21:05 WARN NativeCodeLoader:无法为您的平台加载 native-hadoop 库...在适用的情况下使用内置 java 类 14/12/05 00:21:07 WARN BlockReaderLocal:短路无法使用本地读取功能,因为无法加载 libhadoop。--args 已弃用。请改用 --arg 。电影数量:3883 [root@philli ml]# *

为什么程序的行为应该在以本地方式运行与在集群上运行之间发生变化......我使用命令为 hadoop 构建了 spark-1.1.1

mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -DskipTests 清洁包

我使用的集群是HDP2.1

示例movies.dat 文件如下:

1::玩具总动员 (1995)::动画|儿童|喜剧

2::Jumanji (1995)::冒险|儿童|奇幻

3::脾气暴躁的老人 (1995)::喜剧|浪漫

4::等待呼气 (1995)::喜剧|戏剧

5::新娘之父第二部分 (1995)::喜剧

6::Heat (1995)::动作|犯罪|惊悚

7::萨布丽娜 (1995)::喜剧|爱情

8::汤姆和哈克 (1995)::冒险|儿童

9::猝死 (1995)::动作

10::GoldenEye (1995)::动作|冒险|惊悚

0 投票
3 回答
4136 浏览

scala - 如何在 Scala 中将 Array[(Double, Double)] 转换为 Array[Double]?

我正在使用 Spark (v1.1.0) 和 Scala 的 MLlib 对具有点(经度和纬度)的文件进行 k-means 聚类。我的文件包含用逗号分隔的 4 个字段(最后两个是经度和纬度)。

这里是使用 Spark 的 k-means 聚类示例: https ://spark.apache.org/docs/1.1.0/mllib-clustering.html

我想要做的是读取 HDFS 中特定目录中文件的最后两个字段,将它们转换为RDD<Vector>o 在 KMeans 类中使用此方法: train(RDD<Vector> data, int k, int maxIterations)

这是我的代码:

val data = sc.textFile("/user/test/location/*") val parsedData = data.map(s => Vectors.dense(s.split(',').map(fields => (fields(2).toDouble,fields(3).toDouble))))

但是当我在 spark-shell 中运行它时,出现以下错误:

错误:重载方法值与替代方案密集:(值:Array [Double])org.apache.spark.mllib.linalg.Vector(firstValue:Double,otherValues:Double *)org.apache.spark.mllib.linalg.Vector不能应用于 (Array[(Double, Double)])

所以,我不知道如何将我的 Array[(Double, Double)] 转换为 Array[Double]。也许还有另一种方法可以读取这两个字段并将它们转换为RDD<Vector>,有什么建议吗?

0 投票
1 回答
3849 浏览

java - apache spark MLLib:如何为字符串特征构建标记点?

我正在尝试使用 Spark 的 MLLib 构建一个 NaiveBayes 分类器,该分类器将一组文档作为输入。

我想把一些东西作为特征(即作者、显式标签、隐式关键字、类别),但查看文档似乎 aLabeledPoint只包含双精度,即它看起来像LabeledPoint[Double, List[Pair[Double,Double]].

相反,我其余代码的输出将类似于LabeledPoint[Double, List[Pair[String,Double]].

我可以自己进行转换,但这似乎很奇怪。我应该如何使用 MLLib 来处理这个问题?

我相信答案在HashingTF课堂上(即散列功能),但我不明白它是如何工作的,它似乎需要某种容量值,但我的关键字和主题列表实际上是无限的(或者更好的是,未知开始)。

0 投票
1 回答
430 浏览

apache-spark - 加载 Apache Spark 的 Mllib

我正在尝试使用 Mllib 构建一个非常简单的 scala 独立应用程序,但是在尝试构建程序时出现以下错误:

0 投票
1 回答
377 浏览

apache-spark - Spark MLLib 协同过滤隐式反馈:TypeError:reduce() of empty sequence with no initial value

我正在尝试使用 Spark MLlib 构建隐式反馈推荐系统。我首先在此链接https://databricks-training.s3.amazonaws.com/movie-recommendation-with-mllib.html中运行有关 MovieLens 数据集的教程中的代码。代码运行成功。然后我运行此链接中的代码https://spark.apache.org/docs/1.1.0/mllib-collaborative-filtering.html#explicit-vs-implicit-feedback带有用于明确反馈的测试数据集。它运行良好。然后我给出我的数据集,其形式为 UserID、MovieID、评级。由于它是隐式反馈,因此评分将为 1 或 0。我在第二个链接中运行相同的代码,但使用 model = ALS.trainImplicit(ratings, rank, numIterations, alpha = 0.01)。我收到以下错误:spark-1.1.0/python/pyspark/rdd.py",第 760 行,在 reduce 中 return reduce(f, vals) TypeError: reduce() of empty sequence with no initial value。

我看到第二个链接中编写的代码中没有 vals 参数。错误来自哪里,我们如何解决?

0 投票
2 回答
8815 浏览

scala - Mllib dependency error

I'm trying to build a very simple scala standalone app using the Mllib, but I get the following error when trying to bulid the program:

Then, I realized that I have to add Mllib as dependency as follow :

But, here I got an error that says :

unresolved dependency spark-core_2.10.4;1.1.1 : not found

so I had to modify it to

"org.apache.spark" % "spark-core_2.10" % "1.1.1",

But there is still an error that says :

unresolved dependency spark-mllib;1.1.1 : not found

Anyone knows how to add dependency of Mllib in .sbt file?

0 投票
1 回答
1702 浏览

scala - MLLIb:保存和加载模型

我正在使用LinearRegressionWithSGD,然后我保存模型权重并截取。

包含权重的文件具有以下格式:

截距为 0,因为我使用的是火车而不是设置截距,因此暂时可以忽略它。我现在想初始化一个新的模型对象并使用上述文件中保存的这些权重。我们正在使用 CDH 5.1

这些方面的东西:

然后使用如下:

任何指示我该怎么做?

0 投票
2 回答
7566 浏览

apache-spark - 如何在 spark mllib 中进行基于项目的推荐?

在 Mahout 中,使用 API 方法支持基于项目的推荐:

但在 Spark Mllib 中,似乎 ALS 中的 API 可以获取推荐产品,但用户 ID 必须通过以下方式提供:

有没有一种方法可以根据类似产品获得推荐产品而无需提供用户 ID 信息,类似于 mahout 执行基于项目的推荐的方式。

0 投票
1 回答
43 浏览

apache-spark - 解释 MLLib 的线性回归 o/p

我使用 LIBSVM 格式来指定我的输入特征向量,它使用基于 1 的索引。当我运行回归时,o/p 是基于 0 索引的。我有一个主查找文件,将这些索引映射回它们的位置或。但是,我需要在映射过程中向回归结果添加 2 而不是 1 的偏移量。例如,为了从回归输出文件中映射 800 的索引,我在我的主查找文件中查找 802,然后事情就变得有意义了。我可以理解添加偏移量 1,但不确定为什么添加偏移量 2 可以正常工作。其他人是否也有类似的情况?

0 投票
2 回答
891 浏览

apache-spark - 使用固定种子运行 KMeans

我想运行 MLLIB (Apache Spark) 的 KMeans 算法,但结果可重现。

是否可以使用固定种子运行 MLLIB (Apache Spark) 的 KMeans?如何?

谢谢并恭祝安康,