2015-04-12 40 views
0

我是Spark和Scala的新手。我正在开发一个Scala项目,我将从SQL Server获得数据访问权限。如何继续我的Spark/Scala项目

SQL Server中有一张表有关于衣服的信息。 itemCode是主键和多个属性与布尔值0/1 - 设计师,独占,手摇织机和具有产品等

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 

和列表继续属性几个其它列。

我有选择的32个项目集合了320个项目有ATLEAST: 8设计师,8独家,8手摇纺织机,8 WeddingStyle,8 PartyStyle, 8丝绸,8乔其纱

我已经解决了在MS Excel求解器中的问题(它使用梯度下降算法),通过添加一个额外的列并在添加的列和所需的列之间使用sumproduct函数。所以,这个问题在那里得到了解决,同样花费了大约1分30秒。例如,如果我想从上述16个项目中选择6个项目与至少4个项目设计师,4个独家,4个手摇织机,则可以通过编写32个连接的SQL查询来解决该问题(如此多) ,查询就像在我的帖子中:MYSQL - Select rows fulfilling many count conditions

在生产中,我必须像这样取32行,所以我的问题是如何进一步处理该项目。

我正在为Eclipse的Scala IDE工作,并在那里添加了spark mllib。我已经通过JDBC读取的数据,并存储在一个数据帧,并且将所创建的临时表: dataFrame.registerTempTable(“数据”)

有一个在mllib优化的一类优化使用梯度下降(如Excel求解一样)解决问题。但是,这是针对机器学习并将输入培训数据作为输入。

我无法理解如何继续我的项目。我可以使用mllib,还是使用sparkSQL更好的简单版本的sql。我需要认真的帮助。

+0

听起来像你在正确的轨道上!保持! –

+0

但接下来我该做什么? Mllib用于机器学习,但我没有创建模型,所以我可以使用类优化器来解决我的问题? –

回答

0

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