spark 运行 xgboost 脱坑记

こ雲淡風輕ζ 提交于 2020-01-01 02:47:29

坑:

  1. Spark Xgboost 对 spark的dataframe 的空值非常敏感,如果dataframe里有空值(null , “NaN”),xgboost就会报错。
  2. Spark2.4.4 的 Vector Assemble转换dataframe以后,对于0很多的行,会默认转成sparse vector,造成xgboost报错

示例代码:

val schema = new StructType(Array(
	StructField("BIZ_DATE", StringType, true),
	StructField("SKU", StringType, true),
	StructField("WINDGUST", DoubleType, true),
	StructField("WINDSPEED", DoubleType, true)))


val predictDF = spark.read.schema(schema)
      .format("csv")
      .option("header", "true")
      .option("delimiter", ",")
      .load("/mnt/parquet/smaller.csv")
import scala.collection.mutable.ArrayBuffer

val featureColsBuffer=ArrayBuffer[String]()
for (i <- predictDF.columns){
  if(i != "QTY" & i != "BIZ_DATE" & i!="SKU" & i!="STORE"){
    featureColsBuffer += i
  } 
}
//选择要参与训练的feature column
val featureCols = featureColsBuffer.toArray
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!