spark基础命令

2018/04/07
正如前面一篇文章的说法,我的数据比较特殊,当然特指现在的。
(现在的就先将就着用)
我感觉,虽然原生mapreduce的命令,太底层了。
(比如说,我可以处理完这行之后,处理下一行,然后把这两行合并起来。这些整个过程都是我自己控制的,对于流式的mapreduce的处理方式来说(最起码从那本书里来看),就是这个样子,处理完这行,他们两个的key(经过排序的)一样,然后就可以合并一些东西,这种模式类似于reduce的工作模式,但是map的工作不这样,map还是针对于这一行
但是因为他太底层了,也到底了不够灵活。
但是有一个地方,我觉得可以多去看看,就是,是不是能把这个步骤给对应起来(对照原生mapreduce)
就比如,有些中间产物就必须重新写mapreduce的脚本然后继续。
(------------------------------------------------------------)
反过来说,spark的抽象层次已经很高了。
他可以对一部分数据重复多次利用,(在内存里面缓存的好处)


所以这里就像自己看看一些基础的命令。这些命令我也基本都大致看了,还是说要实践才行。
感觉,特别是那种大数据量的东西应该怎么办。


一定要明白一件事,两种不同的操作,它返回的东西是不同的。
一旦是一个actions,数据量一大返回的东西就太多了,容易爆炸。


在集群运行时的命令
pyspark --master spark://node1:7077 --executor-memory 40G
当时还写过一个调度模式的参数,但是没什么用。

cache
这个命令,一定要在对数据执行action之前运行,不然并不能缓存这部分数据。

countByValue
(这个value,好像是不同的语义,就是不同的情境下,可能产生的东西不一样。)
我现在的实验数据是一行一个三元组。
Care must be taken to use this API since it returns the value to driver program so it's suitable only for small values.
返回的这个value就是整行。但是他给的范例里面显示的就是那种(xxx,x'x'x)就可以算第二个。
可能必须是这种类型的吧。
这里一个比较关键的错误就是,因为这部分数据比较大,就是我执行了之后,就发现出现了下面的错误。
就是内存不够了。
但是如果这样的话,我该怎么做这方面的操作呢。
这个东西不像RDD可以有自建的api使用。

image.png

image.png

!!!!!!
我发现了一个命令,功能跟这个相同。但是他的返回时rdd。执行的命令如下:

lines = sc.textFile("output_new/part-00000")
pairs = lines.map(lambda x : " ".join(x.split("\t")[1:4])).map(lambda s : (s,1))
dis = pairs.reduceByKey(lambda a, b: a + b)

这个返回的dis就是一个rdd,
dis.take(10)
这就美滋滋了,毕竟如果全部东西都返回到内存里面,是肯定不行的。


reduceByKey,!!!!!!!
这个东西,真的是启发我了。上面的一个例子就是,自己构造了他的value。(我的看看这个key-value的具体定义是什么)
那我原来用mapreduce的操作就也可以转化成这个东西。
把确定的东西(三元组)转化成key,然后后面的东西再转化一下。反正就是一个简单的统计嘛。
:)这尼玛就美滋滋了。

这部分一定要好好看官方文档
(其实最开始看的那本书也讲了这个部分,当时跳过去了)(官方还是给出了不少信息的)
http://spark.apache.org/docs/latest/rdd-programming-guide.html#working-with-key-value-pairs

sortByKey
这个是把key作为顺序进行排序的。
如果是想用value进行排序,一个比较常见的需求就是,我统计完了数字之后就得有这个最大的。
就得用sortBy
dis_sort = dis.sortBy(lambda x:x[1], False)
False表示用降序。


2018/04/20
这部分基本上以后也用的不多了,以后都转移到DataFrame的操作上去,大部分命令都是相似的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值