小编Gui*_*era的帖子

如何更新数据集中的值?

所以据我所知 Apache Spark 没有模仿更新SQL 命令的功能。就像,我可以在特定条件下更改列中的单个值。解决这个问题的唯一方法是使用我被指示使用的以下命令(在 Stackoverflow 中):withColumn(columnName, where('condition', value));

然而,该条件应的column类型,这意味着我已经使用内置在柱过滤功能的Apache有(equalToisinltgt,等等)。有没有一种方法可以代替使用 SQL 语句而不是那些内置函数?

问题是我得到了一个包含 SQL 语句的文本文件,例如WHERE ID > 5orWHERE AGE != 50等。然后我必须根据这些条件标记值,我想遵循该withColumn()方法,但我无法在其中插入 SQL 语句功能。知道如何解决这个问题吗?

apache-spark apache-spark-sql

6
推荐指数
1
解决办法
7654
查看次数

使用 Spark 进行聚类的异常检测程序

我正在使用 Apache Spark 开展多个项目,并且一直停留在异常/离群值检测部分。

我使用聚类技术来查找异常,其想法是异常/离群值将形成自己的聚类,这意味着被视为异常的数据点实际上是聚类中心。如果与数据量相关的异常值很少,则此方法有效,但如果有很多异常值,则此方法不起作用。到目前为止,这是我的代码:https: //github.com/Guillermo19/MyTest/blob/3511d33f5c7336adef04f2f93a69f1af7865e066/anomalyDetection.java

我确信我的离群点成为聚类中心的想法是正确的,但这取决于生成的聚类数量,并且到目前为止数据本身和聚类数量之间没有任何关系,所以我找不到一个根据可能的异常值的数量来增加聚类的方法。

我可以在程序中修复/修改哪些内容才能使用聚类正确显示异常值?

或者如果我可以使用不同的方法解决这个问题请告诉我。我个人认为聚类是查找异常值最可行、最好的方法之一......

编辑:这是我迄今为止一直在工作的数据,以及预期的异常结果:

第一个文件:

Name    Size    Records
File1   1000    104370
File2   997     103121
File3   1500    109123
File4   2170    113888
File5   2000    111974
File6   1820    110666
File7   1200    106771
File8   1500    108991
File9   1000    104007
File10  1300    107037
File11  1900    111109
File12  1430    108051
File13  1780    110006
File14  2010    114449
File15  2017    114889
File16  800     88812 //possible outlier. My program does indeed show this
File17  1307    107098
File18  1519    109321
File19  1641    110777
File20 …
Run Code Online (Sandbox Code Playgroud)

cluster-analysis data-mining apache-spark

1
推荐指数
1
解决办法
2127
查看次数