关于 EC2 出现的 No space left on device 问题以及 Mapreduce postprocessing 怎么按 Value 排序
No space 问题
EMR 开的 m3.xlarge 的机器,但是发现不能下载 8G 的压缩包,更别说是 30G 的文件了,显示的是 No space left on device 的错误。来看一下当前磁盘的情况。
|
|
发现硬盘 /dev/xvdc 的大小为 37.5G,足够容纳我们的文件,并且它有 MOUNTPOINT,建立好了文件系统,说明已经可以投入使用啦。
新建文件夹并 MOUNT
COPY 文件
Mapreduce 按 Value 排序
Input 是 (key, frequency),主要思路是 Mapper 里将 key,value 反转变成 (frequency, key),然后定义 sort 的方法为 numerical descending order,reducer 再按正常顺序 (key, frequency) 输出。
Hadoop batch + Java
用 JAVA 做其实是件很简单的事,在 main 函数里设置 Configuration,然后写个 Comparator
Comparator
Configuration
Hadoop streaming + python
用 EMR Streaming + python 也很简单。在 Add Steps 时加上 argument 配置
Spark
Spark 就更是超级无敌简单了,假设 calRdd 计算了 (key, frequency),那么就只要做如下操作