Spark Java的前15分钟数据

时间:2018-07-18 18:43:51

标签: java apache-spark apache-spark-sql apache-spark-dataset

我想计算股票价格的前15分钟和后15分钟的平均值。我执行了以下代码,但由于要进行分组然后进行排序,所以要花14毫秒。那么还有什么更好的解决方案吗?

dataset<Row>=sparkSession.read().option("inferschema","true").option("header","true").format("csv").load("/data.csv");


Dataset<Row> ds2=ds.withColumn("dateWith15minInterval",functions.window(ds.col("datetime"), windowLength)).groupBy("dateWith15minInterval").agg(functions.avg("price").as("price"),functions.avg("volume").as("volume")).sort("dateWith15minInterval").agg(functions.first("price").as("Open Price"),functions.first("volume").as("Open Volume"),functions.last("price").as("Closing Price"),functions.last("volume").as("Closing Volume"));

如果我想加入以下2个数据集:

数据集1:

|first(price, false)|first(volume, false)|last(price, false)|last(volume, false)| .   
| 0.3978028169014084|  1004.7464788732394|0.4179275362318845|  990.9130434782609|

数据集2:

|datetime|avg(price)|High Price|Low Price|avg(volume)|High Volume|Low Volume|
|2017-01-27|0.38369730586370676|0.42|0.328|993.6397253037507|1658|       374|

dataset1.crossjoin(dataset2)  这是加入这些活动的最好方法吗?

0 个答案:

没有答案