Apache spark Apache Spark训练需要很长时间
我使用的是ApacheSpark2.2,我使用的11个特性不到100万行来训练逻辑回归模型。有些功能可能在0到50之间,但大多数功能接近于零 为了训练模型,我使用以下方法:Apache spark Apache Spark训练需要很长时间,apache-spark,pyspark,apache-spark-sql,apache-spark-mllib,Apache Spark,Pyspark,Apache Spark Sql,Apache Spark Mllib,我使用的是ApacheSpark2.2,我使用的11个特性不到100万行来训练逻辑回归模型。有些功能可能在0到50之间,但大多数功能接近于零 为了训练模型,我使用以下方法: lr = LogisticRegression()#maxIter=10, regParam=0.3, elasticNetParam=0.8) lrModel = lr.fit(data) 为了准备数据,我做了一系列的连接过滤器。 当尝试在100行数据上训练模型时,大约需要30分钟。 当我保存这100行(这也需要一段时间
lr = LogisticRegression()#maxIter=10, regParam=0.3, elasticNetParam=0.8)
lrModel = lr.fit(data)
为了准备数据,我做了一系列的连接过滤器。
当尝试在100行数据上训练模型时,大约需要30分钟。
当我保存这100行(这也需要一段时间)时,模型在几秒钟内就得到了训练
我看了这篇文章:
我假设我的数据分布在多个服务器上,当我尝试训练模型时,它必须收集数据。几乎像跑步一样
关于数据。然而,我是新的火花,所以我可能是错的
此外,当我在夜间运行训练模型时,我会出现内存不足错误。然而,以前人们使用这个集群上更大的数据集
我该怎么做才能让这个模型在合理的时间内完成训练?
我曾尝试将模型保存为csv,但这花费的时间太长
请帮帮我
编辑:
spark2提交——主纱线——num executors 100——conf spark.executor.memory=64G
spark = SparkSession.builder \
.appName("spark session example") \
.enableHiveSupport() \
.getOrCreate()
当我说保存时,我的意思是保存为csv
training_dataframe.coalesce(1).write.format('com.databricks.spark.csv').save('file/path/file.csv', header = 'true')
以下是我的代码:
我需要根据事件是否发生在特定日期标记数据。因此,我有一个for循环,在所有工作日循环,并过滤从该日期起的过去30天
筛选一个:
我过滤特定的工作日
筛选两个
我在该工作日前过滤30天
过滤三个
我在该工作日之前过滤14天
过滤四个
我在该工作日之前过滤7天
加入一个
我加入了基于isin的7天、14天和30天表
加入两个
我用标签连接上面的连接表。我将空值替换为零
然后,我使用VectorAssembler并将这些表中的每一个合并到for循环外的变量
所有这些都完成后,我有一份打印报表。因此,需要花费大量时间的部分是训练模型。我将100行数据保存到csv中,这需要很长时间,然后将其上传并用于训练模型。当我上传并训练模型时,整个过程花了一分钟
当我尝试使用100行数据直接训练模型时,训练部分需要30分钟
数据在培训前的外观:
#+--------------------+-----+
# | features|label|
# +--------------------+-----+
# |(11,[0,4,7,10],[0...| 0.0|
# |(11,[0,5,8,10],[0...| 0.0|
# |(11,[0,4,7,10],[1...| 1.0|
# |(11,[0,4,7,10],[0...| 0.0|
# |(11,[0,4,7,10],[0...| 0.0|
你能提供一个最小的可验证和完整的例子吗?首先,我要确定时间花在哪里。您可以说,当数据被保存(以什么格式?在哪里?)时,培训运行得很快,但准备本身是昂贵的。“一堆过滤器”很容易让你陷入麻烦。你能展示一下你试图运行的查询并详细说明数据源的结构吗?不幸的是,我今天不在电脑旁。希望上面的编辑帮助有人能帮忙吗?