spark三维数据挖掘

先上GitHub地址

https://github.com/MethodJiao/PkpmSpark

PkpmSpark

大数据分析 三维数据挖掘运算分析程序

实现的功能

1.分析大数据中相似三维场景
2.对经常出现的三维场景进行加权
3.将结果聚合收束
4.提取最具价值的三维场景

机理

获取mongodb中存储的三维数据进行分析,归并,聚合,加权运算,最后计算完成后的结果存入redis

环境配置

1.mongodb中需含有名称为mydb数据库与名为netflows的collection

2.需要配置kafka 并新建topic名称为order(若不需要由kafka做触发源则不用配置)

3.需配置redis,无用户名密码登录

4.需spark运行环境 2.4.4测试通过

5.需scala sdk 2.11.12测试通过

程序配置

1.kafka消费实例配置在OrderTopicKafka类中,请跟据需要修改,可由工厂模式附加新构造上去

2.redis链接实例配置在RedisConnector类中,请跟据需要修改

3.mongodb链接实例配置在SparkMainTask的main函数中,请跟据需要修改

编译

本项目配置了maven编译,在idea命令行执行mvn assembly:assembly即可编译生成

数据源

本项目数据源来自mongodb,数据采集可以传入kafka借由如下链接项目完成kafka向mongodb的同步,采集端只需保证json格式:

https://github.com/MethodJiao/Kafka2Mongodb

也可直接在mongodb中仿造执行如下insert语句制造数据,数据格式如下:

1.ChildNode中数组可嵌入多个立方体以此描述三维空间

2.HighPt,LowPt分别为立方体体的对角线端点两点

3.Name可以存储当前立方体表述对象名

4.Origin为当前立方体的原点定位

5.YPRangle为立方体姿态角

db.getCollection("netflows").insert( {
    _id: ObjectId("5dededecb3e6784f020c4e90"),
    RootNode: {
        ChildNode: [
            {
                HighPt: {
                    x: 83956,
                    y: 76703,
                    z: 2900
                },
                IsSet: {
                    set: false
                },
                LowPt: {
                    x: 80155,
                    y: 76502,
                    z: 2500
                },
                Name: {
                    name: "PBStructBeam"
                },
                Origin: {
                    x: 83955.9781857537,
                    y: 76602.633138063,
                    z: 2900
                },
                YPRangle: {
                    pitch: 0,
                    roll: 90,
                    yaw: -90
                }
            },
            {
                HighPt: {
                    x: 83557,
                    y: 74903,
                    z: 2900
                },
                IsSet: {
                    set: false
                },
                LowPt: {
                    x: 80756,
                    y: 74702,
                    z: 2420
                },
                Name: {
                    name: "PBStructBeam"
                },
                Origin: {
                    x: 83556.179,
                    y: 74802.2127855456,
                    z: 2900
                },
                YPRangle: {
                    pitch: 0,
                    roll: 90,
                    yaw: -90
                }
            }
        ],
        KeyValue: NumberInt("-6567")
    }
} );

运行

示例:

bin/spark-submit --class spark.bim.SparkMainTask --master spark://10.100.140.35:7077 /Users/method.jiao/code/pkpmspark/target/pkpmspark-1.0-SNAPSHOT-jar-with-dependencies.jar

参数修改:

1.配置ip 10.100.140.35:7077

2.jar包编译路径 /Users/method.jiao/code/pkpmspark/target/pkpmspark-1.0-SNAPSHOT-jar-with-dependencies.jar

PS

1.如果想在idea直接本地启动不上传task到spark集群的话需要在sparksession加个.master(“local”)如:

val sparkSession = SparkSession.builder()
  .appName("PKPMBimAnalyse")
  .config("spark.mongodb.input.uri", "mongodb://10.100.140.35/mydb.netflows")
  .master("local")
  .getOrCreate()

2.如果上传task到集群务必去掉master属性

3.如果想在idea远程提交并调试 如:

val sparkSession = SparkSession.builder()
  .appName("PKPMBimAnalyse")
  .config("spark.mongodb.input.uri", "mongodb://10.100.140.35/mydb.netflows")
  .master("spark://10.100.140.35:7077")
  .getOrCreate()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值