Paw*_*wel 7 apache-spark pyspark apache-spark-ml feature-engineering
我正在尝试使用pyspark进行数据准备,其中涉及其他步骤,例如字符串索引,一种热编码和分位数离散化。我的数据框有很多列(1000列,其中包括500个间隔列,250个分类和250个二进制),位于100万行。
我的观察是,某些数据转换比其他数据转换要慢得多。如下摘要所示,某些步骤甚至可持续3个小时左右,而其他步骤仅需几分钟。
步骤(执行时间):
似乎执行效果最差的步骤是字符串索引,一种热编码,分位数离散化或向量汇编。
您能否建议我应该检查或调整Spark配置或代码中的哪些内容以显着提高这些步骤的性能?
我使用了Pyspark.ml.feature中的上述功能工程步骤方法QuantileDiscretizer,VectorAssembler,OneHotEncoder,StringIndexer。我确定数据已完全上传到群集内存(persist(StorageLevel.MEMORY_ONLY))中。
我的集群包含7个节点(每个4核和16GB RAM)。Spark版本是2.2。使用Pyspark。
应用的Spark配置:
- spark.serializer = org.apache.spark.serializer.KryoSerializer
- spark.kryo.unsafe = true
- spark.rdd.compress = false
- 大师=纱线
- 部署模式=集群
- spark.driver.cores = 4
- 驱动程序内存= 4G
- num-executors = 6
- 执行器内存= 10G
- 执行者核心数= 4
- spark.yarn.maxAppAttempts = 1
- spark.sql.cbo.enabled = true
- spark.sql.constraintPropagation.enabled = false
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |