python/spark中标签Array和数据Array的RDD



我有两个相同长度的python数组。它们是通过读取两个单独的文本文件生成的。一个代表标签;让它被称为"labelArray"。另一种是数据数组的数组;让它被称为"dataArray"。我想把它们变成LabeledPoint的RDD对象。我该怎么做?

我假设源dataArray和lableArray是代码中描述的列表。你可以尝试下面这样的方法来创建一个合并的RDD

>>> lableArray=['l1','l2','l3']
>>> dataArray=['d1','d2','d3']
>>> rdd2=sc.parallelize(lableArray)
>>> rdd1=sc.parallelize(dataArray)
>>> rdd1.collect()
['d1', 'd2', 'd3']
>>> rdd2.collect()
['l1', 'l2', 'l3']
>>> rdd=rdd2.zipWithIndex().map(lambda x:(x[1],x[0])).join(rdd1.zipWithIndex().map(lambda y:(y[1],y[0]))).map(lambda x:x[1])
>>> rdd.collect()
[('l1', 'd1'), ('l2', 'd2'), ('l3', 'd3')]

这里"rdd"是通过组合dataArray和lableArray 创建的最终结果

Spark有一个函数takeSample,它可以将两个RDD合并到一个RDD中。

最新更新