我是Spark新手,試圖創建一些簡單的東西。 我有一個2列的文件:日期和值。 對於每第6次約會,我想使用線性迴歸給出基於之前5個值的投影。 然後將它寫出到一個文件中,並將實際值與預計值之間的誤差寫入第3列。Spark中的第一個代碼(Python)
到目前爲止,我有這樣的:
from pyspark import SparkContext, SparkConf
from datetime import datetime
from timeit import timeit
def after(line, date):
current = line.split(';')[0]
currentDate = datetime.strptime(current, '%Y.%m.%d')
if currentDate > datetime.strptime(date, '%Y.%m.%d'):
return True
else:
return False
def getValue(line):
return float(line.split(';')[1])
conf = SparkConf().setAppName("test").setMaster("local")
sc = SparkContext(conf=conf)
data = sc.textFile('./AAPL.csv')
average = latest_data.reduce(lambda l1, l2: l1+l2)/latest_data.count()
printed_data = data.filter(lambda line: after(line, u'2015.03.27')).map(lambda d: [getValue(d), average, (getValue(d)-average)*(getValue(d)-average)])
printed_data.saveAsTextFile('./result.txt')
我的問題是我不知道如何在星火創建循環類的東西。我的意思是,如果我有,例如,10臺計算機上工作,我想計算並行運行...
而作爲下一步,我只想得到result.txt中的錯誤的總和文件。 (只有這一個號碼。)
如果你想做一些簡單的事情,我建議你改變這個問題。難度來自連續6批次的批次。 'sc.textFile'是基於行的。很可能有些批次將分佈在不同的分區,不同的機器上(如果您有多個分區)。你可能會看到這個問題。 –
@DanielDarabos我認爲你可以flatMap到一個鍵/值:鍵(行的索引),值(日期/值)。然後按每個整數6個/ 6組配對(前6個,直到6/6 = 1,12/6 = 2等)。然後做你的計算,這將更分散。 – theMadKing