Apache spark Apache Spark训练需要很长时间

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行(这也需要一段时间

我使用的是ApacheSpark2.2,我使用的11个特性不到100万行来训练逻辑回归模型。有些功能可能在0到50之间,但大多数功能接近于零

为了训练模型,我使用以下方法:

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|

你能提供一个最小的可验证和完整的例子吗?首先,我要确定时间花在哪里。您可以说,当数据被保存(以什么格式?在哪里?)时,培训运行得很快,但准备本身是昂贵的。“一堆过滤器”很容易让你陷入麻烦。你能展示一下你试图运行的查询并详细说明数据源的结构吗?不幸的是,我今天不在电脑旁。希望上面的编辑帮助有人能帮忙吗?