Skip to main content
 首页 » 编程设计

python之将元组的 spark RDD 转换为 numpy 数组

2025年05月04日37haluo1

如果我的RDD是这样的:

(key (date, value), (date, value), (date, value)) 

如何转换成

(key (Numpy.Array(date), Numpy.Array(value))) 

?

请您参考如下方法:

您可以使用 zip reshape (date, value) 对:

>>> xs = (("x1", 1), ("x2", 2), ("x3", 3)) 
>>> zip(*xs) 
[('x1', 'x2', 'x3'), (1, 2, 3)] 

添加 map 或理解解决了 (Numpy.Array(date), Numpy.Array(value)) 部分,其余部分相当简单:

import numpy as np 
import datetime 
 
rdd = sc.parallelize([ 
    ("foo", 
        (datetime.date(2010, 01, 01),  1.0), 
        (datetime.date(2011, 02, 10),  2.0), 
        (datetime.date(2012, 03, 10),  3.0) 
    ), 
    ("bar", 
        (datetime.date(2000, 04, 01),  14.0), 
        (datetime.date(2001, 05, 10),  15.0), 
        (datetime.date(2002, 06, 10),  16.0 ) 
    ),  
]) 
 
rdd.map(lambda x: (x[0], tuple(np.array(_) for _ in zip(*x[1:]))))