Spark大数据学习笔记

运行:
运行spark版的python:pyspark
Scala版:spark-shell

RDD:
数据集会被自动整理成RDD在集群上并行进行
RDD可以有执行一系列的动作(actions),这些动作可以返回值(values),转换(transformations),或者指向新的RDD的指针。

常见行动操作:(会引起实际的计算)
.count()//相当于RDD的len()
.take(n)//取RDD中n个元素
.collect()输出全部数据
.saveAsTextFile()输出到文件
.reduce()对RDD应用一个reduce函数【reduce函数,对所有元素逐一应用,每次的输入是新的一个跟上一次reduce的返回值lambda x,y: x+y】

常见转化操作:(惰性求值所以不会计算)
RDD1.union(RDD2)//连接RDD


spark基本结构:
每一个spark都用一个驱动器程序来发起并行(spark shellsc)
driver通过SparkContext连接集群(sc)
sc的各种方法都是可以自动进行并行计算的
每一个计算图称为一个RDD
专门用来做键值对操作的RDD叫pair RDD
有对应的一套函数用来根据key进行操作(类似SQL,reduceByKey,groupByKey,join,排序)
PageRank例子:
1.每个页面向相邻页面发送(自己的排序值/邻居数量)
2.每个页面把排序值更新为:0.15+0.85*邻居发过来的值之和

python接口:
在python中import并初始化RDD对象,写好后编写sbt(推荐)或者Maven构建文件注明构建的方式,最后用spark-submit程序运行就可以
特别地,一些比较大的包(比如SQL)pyspark里面不会内建,而是要import一下

要看有什么能用的函数,只要sc.然后按Tab

SQL:
使用
context = SQLContext(sc)//一切sql类都是SQLContext的子类
results = context.sql(“SELECT * FROM people”)
发送一条SQL,返回一个RDD,每个元素一行
查询:
df.select($"colA", $"colB")

数据格式:

1.DataFrame
    // 创建含有单列数据的 DataFrame

    val df = sqlContext.range(0, 16)
2.Dataset:
    更新版本的DataFrame,有的时候会重载旧的DataFrame
    因此当我们从1.6.x迁移到2.0.0的时候, 无需任何修改就直接用上了DataSet.
  能在RDD的基础上扩充功能,要变成Dataset:
  SQLContext.toDS()

数据倾斜:
每台机器数据量不一样,每个元素处理的数据量不一样...之类

Steaming:
用于把数据分batch
此处输入图片的描述
创建Steaming:
1.创建 StreamContext 对象
需要两个参数,一个是 SparkConf 对象(sc),一个是分块间隔时间。
val ssc = new StreamingContext(sc, Seconds(2))

2.创建DStream对象(数据流对象)

        val lines = ssc.socketTextStream("localhost", 9999)
        在 DStream 中,每一条记录都是一行文本
3.对流进行操作
        就对DStream 操作就行,用map之类的,返回新的DStream
    此处输入图片的描述
4.启动流
        ssc.start()

DStream还支持滑动窗口之类的
Steaming通过checkpoint保证其24小时连续工作

MlLib:
跟sklearn里面的简洁度差不多:
1.生成LabelPoint(用来保存样本的数据和标签的数据结构)
    posExamples=spamFeature.map(lambda features:LabeledPoint(1,features))  //把label设为1
    trainingData=posExamples.union(negExamples)  //因为有union的存在,所以把正负数据集并在一起比python还要简单
    *也可以转化成其他的数据结构,比如稀疏矩阵(Vector.dense(ndarray)),Rating之类,但是这些都不包含数据处理,比如加法都是没有的

2.model=LogisticRegressionWithSGD.train(trainingData)

TFIDF:
HashingTF把每个单词所需要的向量长度S % n =hash值,默认是2的20次方,所以产生的向量长度不超过2的20次方

不能并行的时候:
对于不能并行的算法,比如去掉停用词之类的,不能直接写在pyspark上,需要用sc.map(这里写所需python代码)这样就可以在每个单节点上调用。

缓存RDD以重复使用:
调用MLlib前,写sc.cache()(一开始就写也没关系)

进一步支持的其他数据科学工具:
任何 TensorFlow 程序都可以轻松地移植到 TensorFlowOnSpark 上。通常,只需要修改十行以内的 Python 代码。


Scala基本语法:
定义一个新变量一定要用var
常量用val
有很强的隐式类型转换:比如如果char没有toint方法而string有,你硬是在char上调用tolin就会被转成stri


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容