如何继续我的Spark / Scala项目

时间:2015-04-12 13:52:33

标签: sql eclipse scala hive apache-spark

我是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。我需要认真的帮助。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

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