转换操作是返回新的RDD操作,转换操作是惰性的。
常用转换操作
对一个数据为{1,2,3,3}的RDD进行基本的RDD转化操作
函数 | 操作 | 例子 | 结果 |
---|---|---|---|
map | 将函数应用于RDD中的每个元素,返回值构成新的RDD | rdd.map(x => x+1) | {2,3,4,4} |
flatmap | 将函数应用于RDD中的每个元素,返回迭代器的所有元素构成新的RDD。通常用来切分单词 | rdd.flatmap(x = x.to(3)) | {1,2,3,2,3,3,3} |
filter | 将返回一个由通过传给filter的函数组成的RDD | rdd.filter(x => x != 1) | {2,3,3} |
distinct | 去重 | rdd.distinct() | {1,2,3} |
sample(withReplacement,fraction,[seed]) | 对RDD采样,以及是否替换 | rdd.sample(false,0.5) | 非确定的 |
分别为{1,2,3}和{3,4,5}的RDD进行针对两个 RDD的转换操作
函数 | 操作 | 例子 | 结果 |
---|---|---|---|
union | 生成一个包含两个RDD中所有元素的RDD | rdd.union(other) | {1,2,3,3,4,5} |
intersection | 求两个RDD共同元素的RDD | rdd.intersection(other) | {3} |
subtract | 移除一个RDD中的内容 | rdd.subtract(other) | {1,2} |
cartesian | 与另一个RDD的笛卡尔积 | rdd.cartesian(other) | {(1,3),(1,4),(1,5),(2,3),…,(3,5)} |