【发布时间】:2020-03-20 16:39:10
【问题描述】:
我已经为 sarimax(以及一般的时间序列)网格搜索构建了一个 Python 解决方案。
这是一个python类。
在准备好训练和测试集之后,该类将它们存储为对象属性。
稍后,该类构建一个列表,其中每个项目中包含一组用于 statsmodels sarimax 的参数。
然后,这些项目中的每一项都被传递给类 sarimax 方法,用于拟合模型。每个模型都存储在一个列表中,供以后根据用户选择的评分方法进行选择。
类中构建的 sarimax 方法通过对象属性 (self.df_train) 访问训练集
为了并行训练每组参数,我调用 spark 如下:
spark = SparkSession.builder.getOrCreate()
sca = spark.sparkContext
rdd = sca.parallelize(list_of_parameters)
all_models = rdd.map(self.my_sarimax).collect()
它非常适合从 2016 年开始的每月 ts。 但是,如果我尝试喂它更长的 ts,假设从 2014 年开始,火花工作根本不会开始。 它需要一个永恒的“开始”,然后它就会失败。
问题是:
1 - 当我在课堂上运行所有内容时,spark 是否能够理解如何分配此任务?
2 - 集群上的每个节点(worker)能否在需要时轻松找到对象 self.df_train?如果不是,为什么它适用于较短的 ts?我的意思是,这东西很漂亮:训练 9300 多个候选模型平均需要 10 秒。
3 - 如何让它与更长的 ts 一起工作?
【问题讨论】:
标签: python apache-spark pyspark time-series statsmodels