~随手记~
随手随记
~tech notes~
技术笔记开篇.
tech notes by 佚名 @ 2020-03-06 21:36:45
切到该章
收藏
从此续写
~hadoop mapreduce by streaming with python~
以经典的推荐算法中的协同过滤算法为例,看一下如何在hadoop的mapreduce机制上实现.
hadoop mapreduce by streaming with python by 佚名 @ 2020-03-06 21:40:45
切到该章
收藏
从此续写
~算法细分~
user-based和item-based
其user-item-rating数据具有共同的特点:量大/稀疏;
步骤相同:
1.构造user-item-rating矩阵;
2.计算相似度;
3.找top n,计算矩阵中未知的rating;
其中核心问题是计算user或者item的最近邻或者相似度;
相似度算法包括:pearson, cosin, ...
~hadoop streaming~
hadoop streaming实现的目标是:可以让任何语言编写的mapreduce程序都能在hadoop上运行;前提是这些map reduce程序遵循标准输入输出(stdin/stdout).
这简直是python党的福音,python有丰富的数据处理包,numpy/pandas/...,加之其动态脚本的特性,可以灵活的修改,免除类似java各种依赖编译之苦...
hadoop streaming by 佚名 @ 2020-03-06 23:05:18
切到该章
收藏
从此续写
~关于 hadoop streaming~
Hadoop为MapReduce提供了不同的API,可以方便我们使用不同的编程语言来使用MapReduce框架,而不是只局限于Java。这里要介绍的就是Hadoop streaming API。Hadoop streaming 使用Unix的standard streams作为我们mapreduce程序和MapReduce框架之间的接口。所以你可以用任何语言来编写MapReduce程序,只要该语言可以往standard input/output上进行读写。
streamming是天然适用于文字处理的(text processing),当然,也仅适用纯文本的处理,对于需要对象和序列化的场景,hadoop streaming无能为力。它力图使我们能够快捷的通过各种脚本语言,快速的处理大量的文本文件。以下是steaming的一些特点:
1.Map函数的输入是通过stand input一行一行的接收数据的。(不像Java API,通过InputFormat类做预处理,使得Map函数的输入是有Key和value的)
2.Map函数的output则必须限定为key-value pair,key和value之间用\t分开。(MapReduce框架在处理intermediate的Map输出时,必须做sort和partition,即shuffle)
3.Reduce函数的input是Map函数的output也是key-value pair,key和value之间用\t分开。
关于 hadoop streaming by 佚名 @ 2020-03-07 19:47:28
切到该章
收藏
从此续写
last by 匿名 @ 2020-03-07 19:47:28
章节模式
复制地址