首页
学习
活动
专区
工具
TVP
发布

每日三问

31.用mapreduce如何解决两组数据的归并排序问题

数据a:

0 java

2 java

4 java

...

98 java

100 java

数据b:

1 hadoop

3 hadoop

5 hadoop

...

97 hadoop

99 hadoop

###-map_sort-###

import sys

base_count = 10000

for line in sys.stdin:

ss = line.strip().split('\t')

key = ss[0]

val = ss[1]

new_key = base_count + int(key)

red_idx = 1

if new_key < (10100 + 10000) / 2:

red_idx = 0

print "%s\t%s\t%s" % (red_idx, new_key, val)

###-red_sort-###

import sys

for line in sys.stdin:

idx_id, key, val = line.strip().split('\t')

print '\t'.join([key, val])

32.shell脚本通常有哪些类型

通常写一个shell脚本都要在第一行注明使用什么解释器来解释,即写成:#!/bin/bash

这样的形式,意思是告诉系统要使用/bin/bash这个解释器来解释下面的语句。shell的脚本一般用.sh作为后缀,只要你写的脚本的第一行有#!/bin/bash或者是其他的解释器,如#!/bin/csh,执行该脚本时系统会使用该注明的解释器来解释。

.csh脚本使用csh这个shell解释器来解释。

.sh脚本使用bash或sh解释器来解释。

.py则是使用python来解释。

33.Spark RDD、DataFrame和DataSet的区别

RDD

优点:

1.编译时类型安全,编译时就能检查出类型错误

2.面向对象的编程风格,直接通过类名点的方式来操作数据

缺点:

1.序列化和反序列化的性能开销,无论是集群间的通信,还是IO操作都需要对对象的结构和数据进行序列化和反序列化.

2.GC的性能开销,频繁的创建和销毁对象,势必会增加GC

DataFrame

DataFrame引入了schema和off-heap

•schema: RDD每一行的数据,结构都是一样的.这个结构就存储在schema中. Spark通过schame就能够读懂数据,因此在通信和IO时就只需要序列化和反序列化数据,而结构的部分就可以省略了。

•off-heap:意味着JVM堆以外的内存,这些内存直接受操作系统管理(而不是JVM)。Spark能够以二进制的形式序列化数据(不包括结构)到off-heap中,当要操作数据时,就直接操作off-heap内存.由于Spark理解schema,所以知道该如何操作。

off-heap就像地盘, schema就像地图, Spark有地图又有自己地盘了,就可以自己说了算了,不再受JVM的限制,也就不再收GC的困扰了。

通过schema和off-heap, DataFrame解决了RDD的缺点,但是却丢了RDD的优点。DataFrame不是类型安全的, API也不是面向对象风格的。

DataSet

DataSet结合了RDD和DataFrame的优点,并带来的一个新的概念Encoder

当序列化数据时, Encoder产生字节码与off-heap进行交互,能够达到按需访问数据的效果,而不用反序列化整个对象. Spark还没有提供自定义Encoder的API,但是未来会加入.

以上.

听说,爱点赞的人运气都不会太差哦

如果有任何意见和建议,也欢迎在下方留言~

关注这个公众号,定期会有大数据学习的干货推送给你哦~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171229G118N000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券