如何继续我的Spark/Scala项目



我是Spark和Scala的新手。我正在做一个Scala项目,在那里我可以从SQL Server访问数据。

SQL Server中有一个表包含有关衣服的信息。itemCode是主键和几个布尔值为0/1的属性-Designer、Exclusive、Handloom和其他几个具有产品属性的列等。

Code Designer Exclusive Handloom
A        1       0         1
B        1       0         0
C        0       0         1
D        0       1         0
E        0       1         0
F        1       0         1
G        0       1         0
H        0       0         0
I        1       1         1
J        1       1         1
K        0       0         1
L        0       1         0
M        0       1         0
N        1       1         0
O        0       1         1
P        1       1         0

并且列表继续。

我必须从320个项目中选择一个32个项目的集合,这些项目至少具有:8设计师,8独家,8手织,8婚礼风格,8派对风格,8丝绸,8乔治特

我在MS Excel求解器中解决了这个问题(它使用梯度下降算法),添加了一个额外的列,并在添加的列和所需的列之间使用sumproduct函数。因此,问题在那里得到了解决,同样的问题花了大约1分30秒。

此外,这个问题可以通过编写一个具有32个联接(这么多)的SQL查询来解决,例如,如果我想用至少4个项设计器、4个独占、4个handloom从上面的16个项中选择6个项,那么查询就像我的文章中所说的那样:MYSQL-选择满足许多计数条件的行

在生产中,我必须以这种方式获取32行,所以我的问题是如何进一步进行该项目。

我正在为Eclipse开发Scala IDE,并在那里添加了spark-mllib。我通过JDBC获取了数据并存储在数据帧中,然后创建了一个临时表:dataFrame.registerTempTable("数据")

mllib优化中有一个类优化器,它使用梯度下降(就像excel solver一样)来解决问题。但是,这是用于机器学习的,并将训练数据作为输入。

我不明白我该如何进行我的项目。我可以使用mllib吗,或者使用一个更好的简单版本的sql和sparkSQL。我需要认真的帮助。

我建议您使用https://spark.apache.org/docs/1.3.0/sql-programming-guide.html#creating-数据帧而不是MLLib。

我通过线性编程解决了这个问题。我现在已经在我的scala项目中使用了用于java的lpsolver库。它给出的结果与excel求解器中的结果几乎相同。

最新更新