簡體   English   中英

使用Apache Spark進行溫度預測

[英]using apache spark for temperature prediction

我是Spark的新手,並且剛剛開始進行一些認真的工作。
我們正在構建一個平台,在該平台上,我們將在特定時間戳下接收來自站點的溫度數據。 因此數據正以csv的形式發布到RabbitMQ

WD1,12.3,15-10-12T12:23:45
WD2,12.4,15-10-12T12:24:45
WD1,12.3,15-10-12T12:25:45
WD1,22.3,15-10-12T12:26:45

我們正在將數據轉儲到Cassandra中,我們想使用spark來構建數據。 我們從模型中獲得的目標是發現在短時間內出現急劇的溫度升高。 例如,數據中1分鍾內溫度升高了10度。我當時在考慮使用線性回歸來建立模型。 但是,火花線性回歸模型似乎只接受雙精度值,在閱讀了文檔后,我了解到尋找權重的方程式更多地是

y = a1x1+a2x2+a3x3

y = mx+c

因此,spark可以提供權重和截距值。 但是我不確定是否可以使用此模型。 為了滿足我的好奇心,我確實嘗試根據這些數據構建模型。 但是所有的預測都是可怕的,我也認為數據也是如此。 我試圖建立溫度與時間戳的矩陣,並且預測是非常錯誤的。

我的問題如下

  1. 我建立模型的方式是完全錯誤的。 如果是這樣,我該如何糾正?
  2. 如果不是線性回歸模型,是否還有其他模型機制可以表明這種急劇上升?

我的示例代碼:

JavaRDD<LabeledPoint> parsedData = cassandraRowsRDD.map(new Function<String, LabeledPoint>() {
            public LabeledPoint call(String line) {
                String[] parts = line.split(",");
                double value = Double.parseDouble(parts[1]);
                System.out.println("Y = " + Double.parseDouble(parts[0]) + " :: TIMESTAMP = " + value);
                return new LabeledPoint(Double.parseDouble(parts[0]), Vectors.dense(value));
            }
        });
        parsedData.cache();

        StandardScaler scaler = new StandardScaler();
        DataFrame dataFrame = sqlContext.createDataFrame(parsedData, LabeledPoint.class);
        System.out.println(dataFrame.count());

        dataFrame.printSchema();

        LinearRegression lr = new LinearRegression().setMaxIter(10).setRegParam(0.3).setElasticNetParam(0.8);

        // Fit the model
        LinearRegressionModel lrModel = lr.fit(dataFrame);
        System.out.println("Weights: " + lrModel.weights() + " Intercept: " + lrModel.intercept());

我不確定選擇建立線性回歸模型是否適合您的工作。 首先,通常使用模型進行預測。 如果溫度為您感興趣的變量,而您使用時間作為自變量進行,這將意味着你會在你沒有使用,你確實有測量數據點的測量時間使溫度的預測。 或者,如果您試圖顯示全球平均溫度隨時間升高,則擬合線性模型可能是這樣做的一種方式。 這不是您要嘗試執行的操作。

在我看來,您只想處理數據,而不是對其建模並進行預測。 似乎您只是想在1分鍾之內將一個位置上的所有點相減,並且如果該溫差大於10度時通知您。

在這種情況下,細節就是魔鬼。 您是否只對與同一站點的10度變化感興趣? 還是同一區域內的任何傳感器? 無論哪種情況,這都比建模更像是數據處理問題。 例如,如果您想整天收集數據,然后運行明天進行分析的腳本,那么Spark可能是一個不錯的選擇。 另一方面,如果您希望系統持續監視數據並實時進行標記,則Spark可能不是最佳選擇。 在這種情況下,您可能需要查看Apache Storm。 我不是Storm方面的專家,但是我知道他們的大概用例是處理流式,分布式數據。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM