PyHusky支持三种运算符: Load, Transformation, 和 Action.
通畅情况下,一个PyHusky程序首先使用Load运算符.
PyHusky 采用lazy evaluation技术, 所有 Loads 和 Transformations 的运算将会被推迟,以避免不必要的计算和提高性能。 Action 操作才会真正触发计算。
因此一个应用程序需确保以 Load 操作开始,并以 Action 结束。
Transformations 分为两类: simple transformations 和 shuffle transformations。Simple transformations不会导致网络传输,但shuffle transformations会.
以下为PyHusky支持的 Load 操作符。PyHusky应用程序需要包含 env
包以便使用这些运算。
load(url)
:从HDFS中加载数据,使用LineInputFormat(每行成为PyHuskyList的一个元素),返回一个PyhuskyList。
parallelize(list)
: 将一个Python list划分到不同机器上,返回PyHuskyList。
以下为PyHusly支持的 Transformation 操作符。
map(func)
:对已有的PyHuskylist的每一个元素进行函数操作,并返回一个新的PyHuskyList。
flat_map(func)
:和map 函数类似,但每个原元素可以被映射成零个或多个输出元素(func应该返回一个list而不是一个元素)。
filter(func)
:返回一个经过func筛选后的新的PyHuskyList。
concat(pyhuskylist)
:拼接两个PyHuskyList, 并返回一个新的PyHuskyList。
map_partition(func)
:对于每个PyHuskyList数据分片(一个python列表)的所有元素执行func函数,并返回新的PyHuskyList。
distinct()
:返回一个不含重复元素的PyHuskyList。
reduce_by_key(func)
:对由(k, v)对组成的PyHuskyList按照k分组,对每个分组执行func函数聚集v(如求和)。
group_by_key()
:接收由(k, v)对组成的PyHuskyList,按照k进行分组,返回由(k, [v1...])组成的PyHuskyList
count_by_key()
:接收由(k, v)对组成的PyHuskyList,按照k进行分组,计数每个k有多少个对,返回由(k, num)对组成的PyHuskyList
difference(other_pyhuskylist)
:返回一个不包含other_pyhuskylist元素的新PyHuskyList。
以下为PyHusly支持的 Action 操作符。
reduce(func)
:按照func聚集函数聚集所有PyHuskyList中的元素,返回一个最终值。
cache()
:缓存所有PyHuskyList中的元素。
uncache()
:取消对PyHuskyList中元素的缓存。
write_to_hdfs(url)
:将PyHuskyList中的全部元素写出到HDFS的url目录里面。
count()
:返回一个PyHuskyList包含的元素个数。
collect()
:收集各个PyHuskyList分片的数据,返回到前端。
empty()
:返回true如果该PyHuskyList不含任何元素,否则返回false。
topk(k, key=None, reverse=False)
:返回PyHuskyList的前k个元素。
output()
:输出PyHuskyList中的全部元素到前端控制台。
foreach(func)
:对PyHuskyList中的每一个元素实施func函数操作
sample(N)
,take(N)
,union
,intersect
,join
,cartesian
...以下为PyHusky支持的各类应用。
PageRank
from_edgelist(pyhuskylist)
:接收由(src, dst)对组成的PyHuskyList创建一个图。
pagerank(num_iters)
:计算一个图进行PageRank的计算,迭代num_iters次。
topk(k)
:得到一个图top-k的PageRank值
例子:
pr = pagerank.from_edgelist(edgelist) pr.compute(iter=10) pr.topk(5)