编译xgboost4j-on-spark的坑
- 下载源码 git clone –recursive https://github.com/dmlc/xgboost
必须下载依赖 gcc –version 版本必须4.6以上 linux系统下编译 其他操作系统出错问题更多 - cd jvm-packages
- mvn -Dspark.version=2.1.1 package //mvn package
下载jar慢的话可以把pom.xml里面的maven镜像库改成aliyun的库,内存一点要大点,不然编译会报错 - 上传到集群主要要把xgboost4j的jar打包上传
代码
##预测出概率值
代码在gitlab有空自己再贴
SparkStreaming执行不了
查看集群当中是否有其他Streaming任务,kill掉试试
ctrl+c 停止不了任务,需要在监控页面kill掉
redis可以当离线特征存储
定时更新redis,Stream里面启动一个判断 某个时间点进行更新操作
SparkSql引入报错
import sqlContext.implicits._
Java List转RDD报错
import scala.collection.JavaConversion._
val javaRdd=xxx
sc.parallelize(javaRdd)
参数
spark-shell 可以启动分布式 参数与Spark-submit一样
eg:
./spark-shell --master spark://xx:7077 --num-executors 12 --executor-cores 16 --diver-cores 8 --diver-memory 6g --executor-memory 30g -jars xxx.jar
执行的executors的个数 每个的核数(16核=16个task)
总核数num-executors * executor-cores +diver-cores
总内存num-executors * executor-memory +diver-memory
一个partition对应一个task,总task=num-executors * executor-cores
task不是越多越好
控制task的数量
spark-default.conf
spark.sql.shuffle.partitions 50
spark.default.parallelism 10