Spark log4j 配置
Spark的ml包提供了非常好用的调参功能,通过ParamGridBuilder构建待选参数(如:logistic regression的regParam),然后数据量小的时候可以用CrossValidator进行交叉验证,数据量大的时候可以直接用trainValidationSplit,这样Spark就会找到最佳的参数组合并训练模型。
千万不要小瞧这个功能,个人实际工作中的情况来看,logistic regression调整regParam参数,测试集的准确率可以从55%提升到83%(从质疑人生的意义到重新获得生活的希望)。但有个问题是CrossValidator和trainValidationSplit训练得到新model之后,你无从得知所使用最优的参数组合到底是什么,特别是1.6版本的TrainValidationSplitModel你甚至无法保存,这实在太不合理了,应该找时间去github上提个issue……
好在经过一番Google后,在老朋友StackOverflow上找到了解决方案:How to print best model params in Apache Spark Pipeline?
2015-10-21 12:57:33,831 [INFO org.apache.spark.ml.tuning.TrainValidationSplit] Best set of parameters: {
hashingTF_79cf758f5ab1-numFeatures: 2000000,
nb_67d55ce4e1fc-smoothing: 1.0
}
2015-10-21 12:57:33,831 [INFO org.apache.spark.ml.tuning.TrainValidationSplit] Best train validation split metric: 0.7358721053749735.
就是在训练的过程中INFO级别的日志里是有最优参数结果的,因为Spark在console里默认的日志打印级别是INFO,所以大家应该经常看到一大长串日志,而最优参数就埋没在这些日志里了。因此,这里不得不好好了解一下log4j的配置方法了,这里直接上相关的log4j配置文件,然后再进行解释:
log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n # spark trainValidationSplit Best set of parameters
log4j.logger.org.apache.spark.ml.tuning.TrainValidationSplit=INFO, FILE
log4j.additivity.org.apache.spark.ml.tuning.TrainValidationSplit=false log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.file=/home/logos/spark/tuning.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
注:$SPARK_HOME/conf/目录下的log4j.properties文件将被Spark用作默认的log4j配置文件。
- log4j.rootCategory=INFO, console:这里是指定默认的级别为INFO,并且将日志打印在console这个appender里
- 以log4j.appender.console开头的都是console相关的配置,具体的意义可自行Google
- log4j.logger.org.apache.spark.ml.tuning.TrainValidationSplit=INFO, FILE这里是专门针对TrainValidationSplit这个类做定义,采用FILE这个appender
- log4j.additivity.org.apache.spark.ml.tuning.TrainValidationSplit=false代表不继承父Logger的appender
- log4j.appender.FILE开头的都是FILE相关的配置,如:指定日志输出的路径为/home/logos/spark/tuning.log
这样我们就可以打包好用于调参的spark jar包,然后让服务器在后台跑着程序,等着从日志文件里找到最优的参数组合了!
转载请注明出处:http://logos.name/
Spark log4j 配置的更多相关文章
- Spark log4j日志配置详解(转载)
一.spark job日志介绍 spark中提供了log4j的方式记录日志.可以在$SPARK_HOME/conf/下,将 log4j.properties.template 文件copy为 l ...
- spark log4j 日志配置
现在我们介绍spark (streaming) job独立配置的log4j的方法,通过查看官方文档,要为应用主程序(即driver端)或执行程序使(即executor端)自定义log4j配置,需要两步 ...
- 使用log4j配置不同文件输出不同内容
敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...
- log4j 配置
给java项目添加log4j日志: 1.下载log4j jar包,放入lib目录, 导入项目中 2.创建log4j.properties 文件 目录 Src 3.在需要使用输出的类中使用 priva ...
- log4j配置日志文件log4j.appender.R.File相对路径方法
方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...
- paip.Log4j配置不起作用的解决
paip.Log4j配置不起作用的解决 1.jar包里的log4j配置 看累挂jar,真的有个" webservices-rt.jar\com\sun\org\apache\xml\inte ...
- Flume学习 & Kafka & Storm 等 & Log4J 配置
正在学习这篇文章: http://blog.csdn.net/ymh198816/article/details/51998085 和工作中接触的电商.订单.分析,可以结合起来. 开宗明义,这幅图片: ...
- Log4j配置全说明
转载:http://zhangjunhd.blog.51cto.com/113473/21014/ 1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Lo ...
- Openfire服务器和Spark客户端配置
一.Openfire服务器的配置 关于之前一直在进行的聊天app的项目,我们还没有完成,这次我们介绍一下,Openfire服务器的配置. 1.Openfire下载 Openfire下载地址:http: ...
- 简要log4j配置
若排版紊乱可查看我的个人博客原文地址 1. 配置效果 下面的log4j日志配置最终能达到的效果是对于全局日志可以根据级别输入到对应级别的日志文件中,注意低级别的日志文件会同时包含高级别的日志信息,例如 ...
随机推荐
- 极速编程体验:VsCode和webstorm插上ChatGPT
ChatGPT走入了千家万户,而她最适合的用法之一就是进行编程辅助,特别是对一些常规开发,有比较好的引导作用. 很多主流编辑器都有相关的插件支持接入ChatGPT,而VsCode和webstorm是我 ...
- CentOS7.6 添加系统自启脚本
一.编辑脚本 1.在自定义的脚本中添加 # chkconfig: 235 20 80 # chkconfig: 2345 20 80 其中2345是默认启动级别,全部0-6共有7个级别. 0表示:表示 ...
- Source Insight 4.0 常用快捷键小记
1. 括号配对高亮:"在前括号左侧,后括号左侧" 双击鼠标左键,可以选定匹配括号和其中内容(<>,(),L{R},[]之间) 高亮当前单词 : F8 语法窗口(隐藏/显 ...
- java学习日记20230228-数据类型及加号运算
程序中+使用: 1.两侧是数值型,则相加: 2.一方为字符串,则拼接: 3.运算顺序从做到右: 数据类型 每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间: java数据类型 基本数 ...
- CF1404D 题解
题意 传送门 给定 \(2n\) 个数 \(1,2,\dots,2n\),A 和 B 进行交互,如下规则: A 需要将元素分成 \(n\) 组 \(\texttt{pair}\): B 从每组 \(\ ...
- HTML初步了解
W3C:万维网联盟,是国际化最著名的标准化组织. HTML:(Hyper Text Markup Language )超文本标记语言,网页编程语言,用于定义文档的内容和结构. CSS:(Cascadi ...
- C++ MFC学习 (六)
由于微软在VS2013 及之后不建议再使用 C/C++ 的传统库函数 scanf,strcpy,sprintf 等,所以直接使用这些库函数会提示 C4996 错误 VS建议采用带 _S的函数,如: s ...
- windows与linux下的路径区别
windows与linux下的路径区别windows用的是"\",linux用的是"/"这一点要特别清楚,, ps:在PHP windows也可以用/表示路径 ...
- 2022-05-16内部群每日三题-清辉PMP
1.项目可交付成果已移交给客户,项目经理现在必须收集项目参与者的反馈意见.项目经理应该查阅哪份文件来确定哪些人应该被包含进请求反馈意见的名单中? A.相关方登记册 B.沟通管理计划 C.经验教训 D. ...
- 虚拟机中 Linux 提示“设备上没有空间”,扩容磁盘
查看一下磁盘空间使用情况 #df -hl 已使用100% ls /dev/sd* 先查看一下现有sd系统硬盘 关机,存个快照(存不存无所谓),然后在虚拟机设置里添加扩展磁盘容量,选择SCSI类型 重 ...