06 2019 档案
摘要:随着对spark的了解,有时会觉得spark就像一个宝盒一样时不时会出现一些难以置信的新功能。每一个新功能被挖掘,就可以使开发过程变得更加便利一点。甚至使很多不可能完成或者完成起来比较复杂的操作,变成简单起来。有些功能是框架专门开放给用户使用,有些则是框架内部使用但是又对外暴露了接口,用户也可以使用
阅读全文
摘要:Spark2为DataSet/DataFrame提供了一个stat方法,会返回一个DataFrameStatFunctins对象,可以调用其方法来实现数据的探索功能。 1 freqItems 包含了4个重载方法: 查看字段中的频繁元素集合,返回每个字段保安一个数组,包含了所有去重后的元素。suppo
阅读全文
摘要:在流式计算过程中,难免会连接第三方存储平台(redis,mysql...)。在操作过程中,大部分情况是在foreachPartition/mapPartition算子中做连接操作。每一个分区只需要连接一次第三方存储平台就可以了。假如,当前streaming有100分区,当前流式计算宫分配了20个cp
阅读全文
摘要:数据过滤在很多场景都会应用到,特别是在大数据环境下。在数据量很大的场景实现过滤或者全局去重,需要存储的数据量和计算代价是非常庞大的。很多小伙伴第一念头肯定会想到布隆过滤器,有一定的精度损失,但是存储性能和计算性能可以达到几何级别的提升。很多第三方框架也实现了相应的功能,比如hbase框架实现的布隆过
阅读全文
摘要:spark是一款优秀的框架,计算性能相当优异,已经发展成大数据主流计算引擎,在spark开发过程中有很多优化的点。其中去除重复计算是非常重要的。一般操作调用cache/persist,来缓存中间结果,避免重复计算。其中cache是persist的一个特列(cache相当于persist())。per
阅读全文
摘要:在做spark时,有些时候需要加载资源文件,需要在driver或者worker端访问。在client模式下可以使用IO流直接读取,但是在cluster模式下却不能直接读取,需要如下代码: 这是直接读取classPath路径下的文件,但是cluster模式下,driver有可能不再程序提交的客户端上,
阅读全文
摘要:Spark 中进行一些单元测试技巧:最近刚写了一点Spark上的单元测试,大概整理了一些 rdd测试 spark程序一般从集群中读取数据然后通过rdd进行转换,这其中涉及到集群,每次修改bug,上传到集群再运行测试,代价还是挺大;所以尽可能先本地进行单元测试,以减少在集群上运行时错误,特别是map等
阅读全文
摘要:随着公司平台用户数量与表数量的不断增多,各种表之间的数据流向也变得更加复杂,特别是某个任务中会对源表读取并进行一系列复杂的变换后又生成新的数据表,因此需要一套表血缘关系解析机制能清晰地解析出每个任务所形成的表血缘关系链。 实现思路: spark对sql的操作会形成一个dataframe,datafr
阅读全文
摘要:一、关于spark ml pipeline与机器学习一个典型的机器学习构建包含若干个过程 1、源数据ETL 2、数据预处理 3、特征选取 4、模型训练与验证 以上四个步骤可以抽象为一个包括多个步骤的流水线式工作,从数据收集开始至输出我们需要的最终结果。因此,对以上多个步骤、进行抽象建模,简化为流水线
阅读全文
摘要:1规定划分区间的参数,取定长的间隔将特征放入不同的箱子中,这种方法对异常点比较敏感。(等宽) 2 根据频率划分箱子,会出现特征相同却不在一个箱子中的情况,需要在划分完成后进行微调。(等频)先对特征值进行sort,然后评估分割点,划分或者合并 3 1R方法:将前面的m个实例放入箱子中如果后面实例放入箱
阅读全文
摘要:spark sql执行insert overwrite table时,写到新表或者新分区的文件个数,有可能是200个,也有可能是任意个,为什么会有这种差别? 首先看一下spark sql执行insert overwrite table流程: 1 创建临时目录,比如2 将数据写到临时目录; .hive
阅读全文
摘要:一、累加器简介 在Spark中如果想在Task计算的时候统计某些事件的数量,使用filter/reduce也可以,但是使用累加器是一种更方便的方式,累加器一个比较经典的应用场景是用来在Spark Streaming应用中记录某些事件的数量。 使用累加器时需要注意只有Driver能够取到累加器的值,T
阅读全文
摘要:很多时候 我们写的Java程序是分模块的,有很好的扩展机制,即我们可以为我们自己的java类添加插件,来运行将来某天我们可能开发出来的类,以下称这些类为插件类。 下边是一种简单的实现方法: Class A 作为程序的主入口,其中包含了程序的执行入口(main)函数。然后在main函数中通过外部的配置
阅读全文
摘要:排序方法在实际的应用场景中非常常见,Scala里面有三种排序方法,分别是: sorted,sortBy ,sortWith 分别介绍下他们的功能: (1)sorted 对一个集合进行自然排序,通过传递隐式的Ordering (2)sortBy 对一个属性或多个属性进行排序,通过它的类型。 (3)so
阅读全文
摘要:2.使用时涉及到的的包
阅读全文
摘要:在关于spark任务并行度的设置中,有两个参数我们会经常遇到,spark.sql.shuffle.partitions 和 spark.default.parallelism, 那么这两个参数到底有什么区别的? 首先,让我们来看下它们的定义 For distributed shuffle opera
阅读全文