
spark大数据分析
月笼纱lhz
专业能力需要刻意练习!
展开
-
spark ML PipeLine 关键点理解
spark ML pipeline 流程理解原创 2023-01-31 11:00:36 · 340 阅读 · 1 评论 -
从0 spark本地开发环境搭建(idea)
1、jdk的安装、查看什么是jdk? - 知乎2、mavenMaven安装配置及在idea中配置_iqqcode-优快云博客_maven安装与配置idea3、参考0070 IntelliJ IDEA+Scala+Hadoop +Spark的开发环境搭建_gendlee1991的专栏-优快云博客_hadoop spark 开发...原创 2022-01-25 10:27:22 · 1601 阅读 · 0 评论 -
debug 调试
1、打断点调试2、跑到断点位置 按 alt+F8原创 2022-01-20 10:37:30 · 365 阅读 · 0 评论 -
特征工程相关
1、特征数量相关1.1 特征筛选(减少)1.1.1单变量特征选择卡方检验:检测分类特征对分类因变量的影响;例如根据投硬币正反面的次数推断硬币是否均衡;参考文章:百度安全验证相关系数:Pearson 相关系数等;检测2个连续性变量之间的线性关系强弱;所以前提是有线性关系且分别服从正态分布,这个值大小才有意义;参考文章:常用的特征选择方法之 Pearson 相关系数 | HCigmoid单因素方差分析:检测分类型自变量对连续性因变量的影响参考连接:轻松学会单因素方差分析_哔哩哔.原创 2022-01-05 17:51:46 · 759 阅读 · 0 评论 -
spark中调用xgboost实现2分类时需对rawPrediction修改
1、修改代码/** * XGBoost模型预测结果修正,适配Spark内置评估方法 * * @param res XGBoost模型预测结果 * @return 修正后的预测结果 */ private def amendXGBPred(res: DataFrame): DataFrame = { val columns = res.columns if (columns.contains("rawPrediction")) { val原创 2021-12-29 15:40:53 · 1501 阅读 · 0 评论 -
spark代码一些特性-关于map与foreach区别/变量修改
1、关于map与foreach区别:map:遍历RDD,将函数f应用于每一个元素,返回新的RDD(transformation算子);foreach:遍历RDD,将函数f应用于每一个元素,无返回值(action算子);2、切记:spark中对变量的修改没有原地修改,这个和Python有很大区别(1)val amendDatas: Seq[DataFrame] = datas.indices.map(idx=>{ datas(idx).withColumn(columnName.co...原创 2021-12-21 17:51:30 · 1810 阅读 · 0 评论 -
pipeline、网格搜索、交叉验证几问
1、训练集、测试集怎么直白理解?训练集的信息是要完全暴露给数据处理、特征工程、模型训练的;测试集的信息是完全相反,不暴露的;就是要利用训练集得到数据处理器、特征工程、模型,完全走一遍过程,得到预测结果;2、训练集、验证集、测试集怎么直白理解?这里更准确的说法是:训练集-训练部分,训练集-验证部分,测试集;依旧,测试集是完全不暴露给数据处理、特征工程、模型训练的;需要注意的是,训练集-训练部分应该暴露,而训练集-验证部分不应该暴露,要做到这一点需要使交叉验证处在整个数据处理的最外层原创 2021-11-26 10:44:18 · 2241 阅读 · 0 评论 -
spark dataframe中列的metadata信息结构
*******************************************************************************************1、schema的结构形式df.schemaStructType(StructField(Elevation,IntegerType,true),StructField(Aspect,IntegerType,true),StructField(Slope,IntegerType,true))*********原创 2021-11-12 19:30:37 · 1892 阅读 · 0 评论 -
idea中 spark 工程项目单元测试
场景:大数据项目数据规模大,验证代码不可能拿实际项目数据跑,因此为了验证代码功能正确性,就可以利用造数或简单案例数据编写验证代码即单元测试。1、导入包import org.junit.Test2、@Test3、assert语句assert(condition) orassert(condition,StringMessage)4、示例代码class InvalidHandlerTest extends TestBase {/** * 测试场景:根据目标列过滤掉无效原创 2021-11-12 10:43:08 · 1985 阅读 · 0 评论 -
spark udf 与 dataframe连用
示例场景:将dataframe中非法字符替代为 null 类型,方便后续空值填充object Test { def main(args: Array[String]): Unit = { val spark = SparkSession.builder().master("local[*]").appName("function").getOrCreate() import spark.implicits._ val df = spark.createDataFra.原创 2021-11-11 10:06:25 · 1295 阅读 · 0 评论 -
spark项目3层架构模式
1、3层架构模式application--程序common--部分类抽象出来的一部分,特质例如controller--程序调度service --服务层,逻辑dao--持久层,数据util--工具类,皆可使用2、原wordCount示例代码object WordCount { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMast.原创 2021-11-02 09:23:09 · 1810 阅读 · 0 评论 -
spark sc.textfile 路径
1、提交到集群执行时-hdfs路径val data = sc.textFile("/ETL/wordCount.txt")//这是个绝对路径2、local模式,Linux服务器本地地址可绝对路径,可相对路径3、idea开发环境val data = sc.textFile("E:\\13data\\covtype\\covtype.data")//这是个绝对路径val lines = sc.textFile("datas/11.txt")//相对路径相对的是工程的地址:原创 2021-10-20 10:01:58 · 2216 阅读 · 0 评论 -
spark部署模式
1、3种模式(还有其他)local,standalone,yarn2、yarn模式3、yarn 模式提交过程举例3.1 spark程序编写-WordCount.scalapackage org.example.practiceimport org.apache.spark.{SparkConf, SparkContext}object WordCount { def main(args: Array[String]): Unit = { ..原创 2021-10-19 10:29:04 · 179 阅读 · 0 评论 -
spark 广播变量
/** * 广播变量 * 实现join效果,但不使用join * join产生笛卡尔积,数据量几何增长,而且存在shuffle性能不高 */object Test { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount") val sc: SparkContext = new SparkConte.原创 2021-10-13 14:45:17 · 163 阅读 · 0 评论 -
spark自定义累加器
模仿spark自带的累加器,重写方法/** * !!!!! * 累加器实现WordCount * 避免reduceByKey的shuffle操作 */object Test{ def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount") val sc: SparkContext = new Spark原创 2021-10-13 12:00:22 · 335 阅读 · 0 评论 -
spark累加器
累加器用来把Executor 端变量信息聚合到Driver 端。在Driver 程序中定义的变量,在Executor 端的每个Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后, 传回Driver 端进行 merge。object Test{ def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCo原创 2021-10-13 11:58:40 · 272 阅读 · 0 评论 -
spark自定义分区器
/** * !!!!! * 模仿自带分区器,自定义分区器 * 自定义,哪个分区放什么数据 */object Test{ def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount") val sc: SparkContext = new SparkContext(sparkConf) val rdd.原创 2021-10-13 09:25:03 · 426 阅读 · 0 评论 -
spark血缘关系与持久化
/** * !!!!! * rdd不保存数据,保存计算逻辑,类似水管子 * 持久化是截留水池的关系 * 避免从血缘最开始的rdd开始计算 */object Test{ def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount") val sc: SparkContext = new S...原创 2021-10-12 17:41:22 · 488 阅读 · 0 评论 -
spark闭包检测及序列化
/** * !!!!! * 闭包检测及序列化 * 闭包检测:通俗理解函数或方法会用到方法体外的变量,所以编译的时候不光会检测方法体内语法等问题,会包含用到的方法体外的变量都检测了 * 形式上“闭包”,“必包” * 序列化在spark程序中的常用场景,executor端有rdd要执行的算子和算子用到的部分数据,另外用到的类数据需要从driver端传到executor端 * 这个类就需要序列化,extends Serializable(或者变成样例类) * 当然,除了序列化还有另外一种解决思路,.原创 2021-10-11 13:14:53 · 298 阅读 · 0 评论 -
spark资源申请、与分区、task联系
粗浅理解,不完全准确:/** * 申请资源、计算节点数、虚拟cpu核数、并行度、并发度关系,分区、task数量: * 一个nodemanager 上可能有多个executor * spark-shell --num-executors 3 \ * --driver-memory 5g --executor-cores 2 \ //每个executor的虚拟核数 * --executor-memory 2g * 这种情况下最大并发度是是6=计算节点数*虚拟CPU核数 * 分区数=tas原创 2021-10-09 15:15:34 · 641 阅读 · 0 评论 -
scala集合方法与RDD算子区别
1、Scala集合方法与RDD算子区别RDD的方法和Scala集合对象的方法不一样集合对象的方法都是在同一个节点的内存中完成的RDD的方法可以将计算逻辑发送到Executor端(分布式节点)执行为了区分不同的处理效果,所以将RDD的方法称之为算子RDD的方法之外的操作都是在Driver端执行的,而方法内部的逻辑代码是在Excutor端执行的2、RDD转换算子与行动算子转换算子,是将RDD进行各种形式的变换,但不执行行动算子,像是启动按钮,将之前一系列转换算子一并执行..原创 2021-10-09 09:49:36 · 420 阅读 · 0 评论 -
sparkSQL dataframe部分操作
原创 2021-09-16 15:13:07 · 111 阅读 · 0 评论 -
spark机器学习建模样例流程
文字内容,后续补充原创 2021-09-14 13:55:55 · 288 阅读 · 0 评论 -
学spark的一些基本概念逻辑
初学者接触到大数据、spark一些概念,就是这些字认识,但不知道啥意思,无法做到用一个比喻来理解;然后在大框架不了解的基础上,就过于钻到语法细节里面去了,都知道这样不太好,但是最开始确实做不到能有个深入浅出的见解来;而且这种浅出的见解,一般的书籍或是百度都还没有,只能是自己日积月累之后,突然有天有那么点意思了,虽然不能作为正解,但帮助自己理清关系没那么迷茫还是有用的。1、课程推荐b站上尚硅谷的spark课程,老师结合者画图和铺垫讲解,确实清晰,一遍不行,过段时间再来一遍。2、spark、...原创 2021-09-03 19:33:59 · 132 阅读 · 0 评论 -
sparkML 网格搜索+交叉验证
1、位置理解:下方虚线框中的位置;相当于网格搜索+交叉验证(CV)实现了更好的模型选择和参数调优,如果没有这一步,建模流程也是完整的,直接pipeline.fit 及后续步骤;而使用这一步,则是选择了一个优秀的参数组合的模型,再用这个模型fit及后续步骤2、参考文章:https://zhuanlan.zhihu.com/p/77883396...原创 2021-08-09 15:35:45 · 384 阅读 · 0 评论 -
sparkML+XGboost,缺少python报错
写了一个原创 2021-08-05 16:13:32 · 406 阅读 · 0 评论 -
idea输出log到文件
输出log到文件,方便查看完整的运行情况,请高手找问题也可以发给别人,更快速问题定位1、设置log输出的位置,注意不是到目录级别,而是到文件名级别点进去-edit configrations--logs原创 2021-08-05 10:46:03 · 1455 阅读 · 0 评论 -
spark 查看源码显示 sources not found
1、XGboost,spark并没有实现,需要用到第三方包;ctrl+鼠标左击查看源码时,提示如下错误:2、 处理方式:点Attach Source 然后选择 lib目录下 带source后缀的XGboost jar包,就解决了原创 2021-08-04 17:30:13 · 679 阅读 · 0 评论 -
树家族集成篇-lightgbm篇(基于spark)
1、数据质量要求算法 机器学习类别 缺失值 连续值 不平衡数据 离群点 数据归一 离散特征处理 树形 特征选择依据 spark实现 过拟合处理、参数 lightGBM 二分类、多分类、回归 不敏感 不敏感 调参处理 敏感 不敏感 one-hot 或 K值编码 树 目标函数增益,方法上加了很多技巧 第三方 xgboost 二分类、多分类、回归 不...原创 2021-08-03 11:46:33 · 845 阅读 · 0 评论 -
树家族集成篇--xgboost篇(基于spark)
1、数据质量要求算法 机器学习类别 缺失值 连续值 不平衡数据 离群点 数据归一 离散特征处理 树形 特征选择依据 spark实现 过拟合处理、参数 xgboost 二分类、多分类、回归 不敏感 不敏感 不敏感 敏感 不敏感 one-hot 树或者线性模型 目标函数增益 第三方 梯度提升决策树(GBDT) spark支持二分类、回归 敏感,..原创 2021-08-01 22:35:50 · 1753 阅读 · 0 评论 -
idea 根据已有工程进行新建(即导入已有工程)
1、file---new --project from existing sources2、选中文件夹名称3、弹出界面选择,create project from existing sources4、完成后修改maven配置file-settings--build --maven,下方3个地方的路径参考本机上已有的其他工程复制过来如果忘记修改maven,可能会出现下面的情况,则重新修改下maven配置,然后点击idea工具右上方刷新按钮,刷新一下5、最终,成功之后原创 2021-07-30 09:38:26 · 2361 阅读 · 3 评论 -
逻辑回归原理、过程推导、场景适用、参数调整
目录1、场景2、原理(1)手写过程:3、算法优劣4、数据质量要求5、参数思维导图1、场景2、原理(1)手写过程:乱的只有自己能看懂。。。(2)参考:一篇写的很详细的推导,清楚一些https://blog.youkuaiyun.com/jizhidexiaoming/article/details/80591994?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221626679954..原创 2021-07-19 17:24:27 · 228 阅读 · 0 评论 -
xgboost/lightgbm-spark第三方调用(idea)
1、xgboost 包添加到工程目录下新建的lib文件夹中2、pom添加依赖<!-- XGBoost--><dependency><groupId>ml.dmlc</groupId><artifactId>xgboost4j</artifactId><version>0.81</version><scope>system</scope><syste原创 2021-07-08 15:48:54 · 377 阅读 · 0 评论 -
org.apache.spark.SparkException: Failed to execute user defined function($anonfun$11: (vector) => ve
1、添加配置参数spark官网gbdt-regression的案例,但是直接使用会出现标题提示的错误,需要在vectorindexer加上配置参数 setHanddleInvalid: val featureIndexer = new VectorIndexer() .setInputCol("features") .setOutputCol("indexedFeatures") .setMaxCategories(4) .setHandl原创 2021-07-05 15:34:50 · 1612 阅读 · 0 评论 -
分类评价指标
目录1、二分类2、多分类1、二分类(1)指标:准确率、精确率、召回率、F1、roc曲线、AUC值(2)场景:(2.1)准确率、精确率、召回率都有比较特定的场景,例如搜索结果准确率适宜精确率、医生检查病症适宜召回率,F1是精确率和召回率的调和考虑指标;(2.2)roc曲线、AUC值是仅适应2分类问题时的很好用指标,AUC值是ROC曲线面积的量化,所以关键理解下roc曲线横纵坐标:roc曲线是越往左上角越好,纵坐标是看真正率(正的里面预测为正的,越多越好),横坐标是看假正率(原创 2021-07-04 16:20:28 · 462 阅读 · 0 评论 -
spark官网配套的代码数据在哪儿
Github上可以下载1、网址https://github.com/apache/spark2、下载3、路径举例spark官网上关于gbdt用到的示例,根据下载后的文件可找到。原创 2021-07-02 16:44:51 · 222 阅读 · 0 评论 -
树家族集成篇-梯度提升决策树篇(基于spark)
目录1、数据质量要求2、原理解释(1)白话原理(2)场景(3)特点3、代码相关1、数据质量要求算法 机器学习类别 缺失值 连续值 不平衡数据 离群点 数据归一 离散特征处理 树形 特征选择依据 spark实现 过拟合处理 决策树-ID3 多分类 无法处理 无法处理 不敏感 不敏感 不敏感 可处理 多叉树 信息增益 no 决策树-C4..原创 2021-07-02 14:55:33 · 332 阅读 · 0 评论 -
树家族集成篇-随机森林篇(基于spark)
目录1、数据质量要求2、原理解释3、代码相关1、数据质量要求算法 机器学习类别 缺失值 连续值 不平衡数据 离群点 数据归一 离散特征处理 树形 特征选择依据 spark实现 过拟合处理 决策树-ID3 多分类 无法处理 无法处理 不敏感 不敏感 不敏感 可处理 多叉树 信息增益 no 决策树-C4.5 多分类 不敏感 不敏感原创 2021-06-30 10:29:59 · 580 阅读 · 0 评论 -
树家族基础-决策树篇(基于spark)
本文章前提是“单变量决策树”,即每次仅在备选特征中挑选1个,不考虑“多变量决策树”的情形。另外,算法本身和spark Mlib库的支持也是两回事,有些功能算法可能本身有,但是支持库spark或是Python没有实现,所以有时候会有点混乱,要关注spark库实现。1、数据质量要求目录1、数据质量要求2、原理解释(1)场景(2)缺失值-C4.5算法不敏感(3)缺失值-Cart算法敏感(4)不平衡数据不敏感(5)离群点数据不敏感(6)数据归一不敏感(7)离散特征处理原创 2021-06-28 17:51:38 · 1464 阅读 · 0 评论 -
脚本运行、spark-shell关闭
1、本地脚本上传到服务器上四个关键步骤:secureCRT中点击file-SFTP链接、进入本地文件地址、进入服务器文件存放地址、put命令2、spark-shell中执行脚本(不要少了冒号) :load /ETL/linkage/Long2Wide.scala3、spark关闭退出的时候 在 spark-shell 里面用 :quit 命令退出,这样退出会释放资源 用ctrl c 退出来资源还是占用的4、spark进入(加点限制,省的影响他人性能使用)spark-shel原创 2021-06-07 17:54:10 · 718 阅读 · 0 评论