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()
發佈了26 篇原創文章 · 獲贊 26 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章