我想计算股票价格的前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) 这是加入这些活动的最好方法吗?