[英]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可以提供權重和截距值。 但是我不確定是否可以使用此模型。 為了滿足我的好奇心,我確實嘗試根據這些數據構建模型。 但是所有的預測都是可怕的,我也認為數據也是如此。 我試圖建立溫度與時間戳的矩陣,並且預測是非常錯誤的。
我的問題如下
我的示例代碼:
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.