东篱下

闲庭舞键

  • PAPER
  • ECONOMIST
  • OFFER
  • SPARK
  • HIVE
  • FLINK
  • ALGO
  • GEM
  • 归档
  • 标签
  • 搜索

spark分层取样

发表于 2017-11-27 | 分类于 spark

先将总体的单位按某种特征分为若干次级总体(层),然后再从每一层内进行单纯随机抽样,组成一个样本的统计学计算方法叫做分层抽样。在spark.mllib中,用key来分层。

与存在于spark.mllib中的其它统计函数不同,分层采样方法sampleByKey和sampleByKeyExact可以在key-value对的RDD上执行。在分层采样中,可以认为key是一个标签,
value是特定的属性。例如,key可以是男人或者女人或者文档id,它相应的value可能是一组年龄或者是文档中的词。sampleByKey方法通过掷硬币的方式决定是否采样一个观察数据,
因此它需要我们传递(pass over)数据并且提供期望的数据大小(size)。sampleByKeyExact比每层使用sampleByKey随机抽样需要更多的有意义的资源,但是它能使样本大小的准确性达到了99.99%。

sampleByKeyExact()允许用户准确抽取f_k * n_k个样本,
这里f_k表示期望获取键为k的样本的比例,n_k表示键为k的键值对的数量。下面是一个使用的例子:

阅读全文 »

Dataset.scala

发表于 2017-11-23 | 分类于 spark

前言

Dataset 是一种强类型的领域特定对象集合,可以在使用功能或关系操作的同时进行转换。每个 Dataset 也有一个名为 “DataFrame” 的无类型视图,它是 [[Row]] 的 Dataset。
Dataset 上可用的操作分为转换和动作:

转换:产生新的 Dataset ;包括 map, filter, select, and aggregate (groupBy).
动作:触发计算并返回结果 ;包括 count, show, or 写数据到文件系统。

Dataset是懒加载的,例如:只有提交动作的时候才会触发计算。在内部,Datasets表示一个逻辑计划,它描述生成数据所需的计算。当提交动作时,Spark的查询优化器会优化逻辑计划,并以并行和分布式的方式生成有效执行的物理计划。请使用explain 功能,探索逻辑计划和优化的物理计划。

为了有效地支持特定于领域的对象,需要[[Encoder]]。编码器将特定类型的“T”映射到Spark的内部类型系统。例如:给一个 Person 类,并带有两个属性:name (string) and age (int),编码器告诉Spark在运行时生成代码,序列化 Person 对象为二进制结构。

通常有两种创建Dataset的方法:

使用 SparkSession 上可用的 read 方法读取 Spark 指向的存储系统上的文件。
用现存的 Datasets 转换而来。

Dataset操作也可以是无类型的,通过多种领域专用语言(DSL)方法定义:这些操作非常类似于 R或Python语言中的 数据框架抽象中可用的操作。

阅读全文 »

JavaRDDLike.scala

发表于 2017-11-21 | 分类于 spark

使用Java开发Spark程序,JavaRDD的功能算子中英文注释
JavaRDDLike的实现应该扩展这个虚拟抽象类,而不是直接继承这个特性。

JavaRDD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package org.apache.spark.api.java

private[spark] abstract class AbstractJavaRDDLike[T, This <: JavaRDDLike[T, This]]
extends JavaRDDLike[T, This]

/**
* Defines operations common to several Java RDD implementations.
*
* 定义几个Java RDD实现的常见操作。
*
* @note This trait is not intended to be implemented by user code.
*
* 该特性不打算由用户代码实现。
*/
trait JavaRDDLike[T, This <: JavaRDDLike[T, This]] extends Serializable {
def wrapRDD(rdd: RDD[T]): This

implicit val classTag: ClassTag[T]

def rdd: RDD[T]
阅读全文 »

spark源码注释翻译

发表于 2017-11-06 | 分类于 spark

版本:spark2.1.1
目的:方便中文用户阅读源码,把时间花在理解而不是翻译上

初衷

开始立项进行翻译,一方面方便日后阅读源码,另一方面先粗粒度的熟悉下spark框架和组件。优化完之后希望能帮助更多的中文用户,节省翻译时间。

阅读全文 »

spark关于parquet的优化

发表于 2017-11-01 | 分类于 spark

parquet是一种列式存储。可以提供面向列的存储和查询。

Parquet的优势

在sparkSQL程序中使用parquet格式存储文件,在存储空间和查询性能方面都有很高的效率。

存储方面

因为是面向列的存储,同一列的类型相同,因而在存储的过程中可以使用更高效的压缩方案,可以节省大量的存储空间。

查询方面

在执行查询任务时,只会扫描需要的列,而不是全部,高度灵活性使查询变得非常高效。

阅读全文 »

三步走战略

发表于 2017-11-01 | 分类于 规划

设定中长期规划
稳扎稳打,逐个击破,实现技术上的重大突破

阅读全文 »

手把手搭建vps和shadowsocks

发表于 2017-10-31 | 分类于 vps

记性不好,做个记录,日后有需要时难得费神。

名词解释

了解一些原理,熟悉一些名词,也方便理解接下来安装过程中的操作。

vps

VPS(Virtual private server) 译作虚拟专用伺服器。你可以把它简单地理解为一台在远端的强劲电脑。当你租用了它以后,可以给它安装操作系统、软件,并通过一些工具连接和远程操控它。

vultr

Vultr 是一家 VPS 服务器提供商,有美国、亚洲、欧洲等多地的 VPS。它家的服务器以性价比高闻名,按时间计费,最低的资费为每月 $2.5。

linux

Linux 是免费开源的操作系统,大概被世界上过半服务器所采用。有大量优秀的开源软件可以安装,上述 Shadowsocks 就是其一。你可以通过命令行来直接给 Linux 操作系统「下命令」,比如 $ cd ~/Desktop 就是进入你根目录下的 Desktop 文件夹。

ssh

SSH 是一种网络协议,作为每一台 Linux 电脑的标准配置,用于计算机之间的加密登录。当你为租用的 VPS 安装 Linux 系统后,只要借助一些工具,就可以用 SSH 在你自己的 Mac/PC 电脑上远程登录该 VPS 了。

shadowsocks

Shadowsocks(ss) 是由 Clowwindy 开发的一款软件,其作用本来是加密传输资料。当然,也正因为它加密传输资料的特性,使得 GFW 没法将由它传输的资料和其他普通资料区分开来,也就不能干扰我们访问那些「不存在」的网站了。

阅读全文 »

spark报错集

发表于 2017-10-30 | 分类于 spark

有话要说

针对一个老毛病:有些错误屡犯屡改,屡改屡犯,没有引起根本上的注意,或者没有从源头理解错误发生的底层原理,导致做很多无用功。

总结历史,并从中吸取教训,减少无用功造成的时间浪费。特此将从目前遇到的spark问题全部记录在这里,搞清楚问题,自信向前。

阅读全文 »

life

发表于 2017-10-29 | 分类于 movie

Life is simple && funny.

阅读全文 »

杂乱无章

发表于 2017-10-29 | 分类于 think

时光的机器,加足马力冲回过去

历史的长河,丝丝涟漪涌向未来

阅读全文 »
1…456
舒服一夏

舒服一夏

技术改变世界,阅读塑造人生

53 日志
18 分类
29 标签
© 2020 舒服一夏