import org.apache.commons.lang3.StringUtils import org.apache.commons.lang3.math.NumberUtils object Test extends App{ val arr = List(1,3.2) for(a<-arr){ println("a:"+a+":"+NumberUtils.isNumber(String.valueOf(a))) } println(StringUtils.isNumeric(String.valueOf("1"))) println(StringUtils.isNumeric(String.valueOf("3.2"))) }
打印的结果:
a:1.0:true
a:3.2:true
true
false
推荐的打分使用double要注意处理
val data = sc.textFile(train_data_in_hdfs) println("data.collect().size is:"+data.collect().size) val clearData=data.filter(oneData=>NumberUtils.isNumber(oneData.split(SPLIT_CHAR)(0))&&NumberUtils.isNumber(oneData.split(SPLIT_CHAR)(1))&&NumberUtils.isNumber(oneData.split(SPLIT_CHAR)(2))) println("clearData.collect().size is:"+clearData.collect().size) println("====================start to create model....") if (!clearData.isEmpty()) { val ratings = clearData.map(_.split(SPLIT_CHAR)).map({ p => Rating(p(0).toInt, p(1).toInt, p(2).toDouble) }) ratings.persist(StorageLevel.MEMORY_AND_DISK) model = ALS.train(ratings, rank, numIterations, lambda) model.save(sc, model_save_hdfs_dir) }else{ println("====================clearData is null") sys.exit(-1) }