我是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个具有ATLEAST的项目中选择32个项目的集合: 8个设计师,8个独家,8个手摇纺织机,8个WeddingStyle,8个PartyStyle, 8丝绸,8乔其纱
我通过添加一个额外的列并在添加的列和所需列之间使用sumproduct函数解决了MS Excel解算器中的问题(它使用了Gradient Descent algo)。因此,问题在那里得到了解决,同样需要大约1分30秒。
此外,问题可以通过编写带有32个连接(如此多)的SQL查询来解决,例如,如果我想从上面的16个项目中选择6个项目,至少有4个项目设计师,4个独家,4个手摇纺织机,查询就像我的帖子:MYSQL - Select rows fulfilling many count conditions
在制作中,我必须以这种方式获取32行,所以我的问题是如何继续进行该项目。
我正在使用Eclipse的Scala IDE,并在那里添加了spark mllib。我通过JDBC获取数据并存储在数据帧中,并创建了一个临时表: dataFrame.registerTempTable("数据&#34)
mllib优化中有一个类优化器,它使用梯度下降(如excel求解器)来解决问题。但是,这是机器学习,并作为输入培训数据。
我无法理解如何继续我的项目。我可以使用mllib,或者使用更好的简单版本的sql与sparkSQL。我需要认真的帮助。
答案 0 :(得分:1)
答案 1 :(得分:0)
我通过线性编程解决了这个问题。我现在在我的scala项目中使用了lpsolver库for java。它给出了与excel求解器几乎相同的结果。