
scala
文章平均质量分 59
巴拉巴拉朵
这个作者很懒,什么都没留下…
展开
-
HitRecall的scala实现
HitRecall的scala实现topK推荐中常用评估指标就有HitRecall,这个指标的定义如下HR@K = NumbersOfHit@K / GT分母是所有测试集集合,分子是topK推荐中命中测试集的总和事先将用户向量和物料向量导出来,假设格式一致userid1||0.03388985991477966,-0.05629376694560051,-0.28580108284950256,-0.03301679715514183,-0.00348331220448017,0.23206464原创 2021-11-21 16:23:30 · 835 阅读 · 0 评论 -
采坑记Memory is not enough for task serialization: java.lang.OutOfMemoryError
采坑记 Memory is not enough for task serialization: java.lang.OutOfMemoryError背景:一个每天跑的Spark程序突然出现Memory is not enough for task serialization: java.lang.OutOfMemoryError 这样的OOM错误,具体错误如下。怀疑是输入数据变大导致结果变大,加大executor内存,每个core的内存直接翻一倍重跑,还是失败;怀疑数据中有极端长的字符串导致,每个cor原创 2021-01-30 14:29:03 · 668 阅读 · 2 评论 -
Spark效率优化之道
scala编程效率优化之道scala语言非常灵活,想要实现某种功能可能有许多种写法,但是不同的写法效率是不一样的。在输入数据量不大的时候体现不出来,但是输入规模一旦起来之后,耗时差异就十分显著了。在实际中碰到一个例子,有个物品曝光序列seq,用的是Array表示,然后在物品候选集candidates中需要判断每个候选集是否已曝光,使用方式如下。由于候选集和曝光集合都很大,序列数组的contains方法是遍历来比较,时间复杂度远远高于Set,在运行数亿次之后,序列的耗时综合比较是Set的3倍df.map原创 2020-11-28 22:00:01 · 658 阅读 · 0 评论 -
scala做embedding的average操作
scala做embedding的average操作使用 breeze.linalg 来对embedding向量处理breeze.linalg 库可以对矩阵向量做很多操作,普通的加减乘除,点乘叉乘,都能支持import breeze.linalg.DenseVectorimport org.apache.spark.ml.linalg.{Vector, Vectors}import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}im原创 2020-08-23 12:04:52 · 426 阅读 · 0 评论 -
scala操作Hadoop Api改变目录权限成777及写入单个hdfs文件
scala操作Hadoop Api改变目录权限成777及写入单个hdfs文件Hadoop 2.7.0支持修改目录的权限,可以修改成任意权限。这个问题的背景是,如果是某个人生成了一个hdfs路径,同一个group的成员如果想修改这个路径上面的内容,需要重新写入hdfs路径,在新的Hadoop Api这里会存在权限问题,必须将目录的权限修改下才能写入。如果想单独在某个hdfs目录下面写入一个文件,可以使用FSDataOutputStream类。spark生成的hdfs都是目录,这里使用输出流可以单独原创 2020-08-23 11:16:56 · 1149 阅读 · 0 评论 -
Spark DataFrame内置sql函数总结
Spark DataFrame sql函数总结Spark DataFrame内置了200+个函数供使用,包括聚合、集合、时间、字符串、数学、排序、窗口、UDF等多类函数,是个十分齐全的百宝箱,灵活运用可以事半功倍。用之前需要导入sql函数import org.apache.spark.sql.functions._ 自定义UDF函数如果觉得百宝箱不够用,需要自己造个轮子,可以用udf来...原创 2020-04-12 19:33:14 · 937 阅读 · 0 评论 -
FastJson在scala中序列化与反序列化
FastJson在scala中序列化与反序列化Alibaba的一款开源JSON组件FastJson,非常好用,在序列化和反序列化方面性能突出,而且API接口简单易用,算是处理JSON的一大利器首先,添加依赖,注意这里的版本号,务必使用最新版本,因为1.2.58以下的低版本在反序列化的时候存在漏洞,容易被黑客利用攻击服务器,最新版本可以参考官网FastJson的具体版号<dependen...原创 2019-08-29 10:19:46 · 4499 阅读 · 1 评论 -
Scala操作HDFS
Scala操作HDFS基本的HDFS操作包括:获取文件系统、检查文件是否存在、列举当前目录下的所有文件路径、列举当前目录下的所有文件名称、删除当前路径、创建新的路径import org.apache.hadoop.confimport org.apache.hadoop.conf.Configurationimport org.apache.hadoop.fs.{FileStatus, F...原创 2019-07-23 22:51:15 · 2760 阅读 · 0 评论 -
Scala日志SLF4J配置
Scala日志配置scala的日志与java的基本相同,看到网上一篇入门讲解的非常详细java日志使用记录log4j使用总结,作者是习翔宇Spark默认的日志配置文件路径在spark-2.1.1-bin-hadoop2.7文件夹下面,例如D:\ProgramData\spark-2.1.1-bin-hadoop2.7\conf\log4j.properties我们可以把log4j.prope...原创 2019-04-02 23:52:58 · 5369 阅读 · 0 评论 -
Scala JDBC操作数据库
Scala 操作数据库(查询、插入、更新)Scala操作数据库需要载入 java.sql.DriverManager ,我们分为查询和插入两个模块进行,每个模块也分为一条记录和多条记录来操作首先,需要导入必须的信息,定义你要访问的JDBC地址和你的表名import java.sql.DriverManagerimport org.joda.time.DateTimeimport sc...原创 2019-03-22 14:38:01 · 1021 阅读 · 0 评论 -
判断一个点是否在多边形里面
判断一个点是否在多边形里面判断一个点是否在一个多边形里面,会在很多地方用到。尤其是,给你一个多边形,不管是凹的,凸的,任意形状,然后再来一个点的位置,任凭你这个点的位置在哪,都能快速判断这个点是不是属于这个多边形,不管点在哪,快到碗里来开始以为判断一个点是否属于多边形的算法非常复杂,我都准备好闭关修炼苦攻算法,没想到原理是这么简单,so easy~ 这个算法用途非常广泛,可以用在地理位置计算...原创 2019-01-21 21:55:26 · 409 阅读 · 0 评论 -
Java时间处理之org.joda.time.DateTime
文章目录org.joda.time.DateTime常用工具 Java实现方法索引org.joda.time.DateTime常用工具 Java实现org.joda.timescala 版本实现的地址 https://blog.youkuaiyun.com/whgyxy/article/details/86554624java原生的时间处理函数实在是无力吐槽,太难用了。后来找到一个非常好用的时间处...原创 2019-01-21 21:16:36 · 19141 阅读 · 3 评论 -
Scala中时间处理org.joda.time.DateTime工具
文章目录org.joda.time.DateTime常用工具 scala实现方法索引org.joda.time.DateTime常用工具 scala实现org.joda.timejava原生的时间处理函数实在是无力吐槽,太难用了。后来找到一个非常好用的时间处理模块——joda时间处理,真是个好东西,处理时间非常便捷,在这个基础上进行简单的封装可以完成很多事情,这里列出scala实现的一些...原创 2019-01-21 20:52:37 · 3322 阅读 · 4 评论