估算缺失值

时间:2020-10-06 12:18:43

标签: scala apache-spark

原始数据-(几天缺少数据)

RawData

所需的O / P-(即,为丢失的值填写先前的已知值)

Desired O/p

要求-用先前的已知值填充所有丢失的数据。

我当前的实施-(POC)

import org.apache.spark.sql.expressions.Window


val rawDataDf = Seq(("2020-09-25","product1","4.4"),
               ("2020-09-28","product1","4.1"),
               ("2020-09-30","product1","4.2"))
            .toDF("datetime","product","quantity")
            .select(to_timestamp($"datetime") as "datetime",$"product",$"quantity".cast("float"))

rawDataDf.createOrReplaceTempView("rawDataDfView")

val new_combinedDf = spark.sql("select a.*,(select distinct product from rawDataDfView) as product,b.quantity from dataDateDfView a left join rawDataDfView b on a.dates = b.datetime ")
display(new_combinedDf)
new_combinedDf.createOrReplaceTempView("finalview")
new_combinedDf.withColumn("quantity",last("quantity",true).over(Window.partitionBy("product").orderBy("dates"))).show()

这个POC(基本理解水平)的逻辑按预期工作,但是我想知道是否可以使用其他更易于实现,可扩展和可定制的东西。

Facebook Prophet可悲的是,我无法在Spark-scala中直接使用它,因为Prophet仅受Python或R支持。 引用链接-https://github.com/facebook/prophet/issues/523

* 更新

我已经使用Cloudera Sparkts的TimeSeriesRDD成功实现了这一目标。 但是问题在于,Cloudera SparksTs自2016年以来未见任何更新,我担心它可能已经达到生命周期支持。

我正在寻找可以满足我的要求的兼容插补逻辑/库。 预先感谢。

0 个答案:

没有答案