环境:Amabri 2.2.2、HDP 2.4.2、Spark 1.6.1
***这是我自己东拼西凑整出来的,错误在所难免,但应该也有部分可借鉴之处...***
整体思路:对原始数据提取特征后,使用KMeans做聚类,把元素明显少的类视为异常类,类中的用户视为异常用户,打上标签,之后用随机森林进行分类,
训练出模型后对新数据进行分类,找出异常用户。
之前统计分析、特征工程部分用的MySQL,聚类用了R和Mahout,分类用了MLlib,怎一个乱字了得。我想了想觉得完全可以只用Spark完成。
1.前面的统计分析、特征工程用Spark SQL代替MySQL即可,都是SQL只有部分函数不一样,改一下就行,比较简单不再做了。
(我的原则是能用SQL解决的坚决先用SQL 0.0)
2.将MySQL中的特征表通过Sqoop导入Hive。(Hive和Spark SQL的元数据是共享的)
#因为特征表没有主键,需要切分字段或设置map数为1
[hdfs@ws1dn1 root]$ sqoop import --connect jdbc:mysql://192.168.1.65:3306/v3 --username root -P --table t_log_2016_all --hive-import -m 1
3.使用Spark MLlib