在Pyspark的RDD分区中拆分数组

麦可

我只有一个3D数值数据文件,该文件是按块读取的(因为按块读取比单个索引快)。例如,说“文件”中有一个MxNx30数组,我将创建一个RDD,如下所示:

def read(ind):
    f = customFileOpener(file)
    return f['data'][:,:,ind[0]:ind[-1]+1]

indices = [[0,9],[10,19],[20,29]]
rdd = sc.parallelize(indices,3).map(lambda v:read(v))
rdd.count()

因此,这3个分区中的每个分区都有一个大小为MxNx10的numpy.ndarray元素。

现在,我想拆分每个元素,以便在每个分区中有10个元素,每个元素都是一个MxN数组。我为此目的尝试使用flatMap(),但收到“ NoneType对象不可迭代”的错误:

def splitArr(arr):
    Nmid = arr.shape[-1]
    out = []
    for i in range(0,Nmid):
         out.append(arr[...,i])
    return out

rdd2 = rdd.flatMap(lambda v: splitArr(v))
rdd2.count()

正确的方法是什么?关键点是(a)我需要从文件中分块读取数据,并且(b)拆分数据,使元素的大小为MxN(最好保持分区结构)。

零323

据我了解您的描述,这样的事情应该可以解决:

rdd.flatMap(lambda arr: (x for x in np.rollaxis(arr, 2)))

或者,如果您希望使用单独的功能:

def splitArr(arr):
    for x in np.rollaxis(arr, 2):
        yield x

rdd.flatMap(splitArr)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在pyspark RDD上显示分区

来自分类Dev

我可以从函数参数中拆分数组

来自分类Dev

如何在Codeigniter的视图页面中拆分数组值

来自分类Dev

Java如何在函数中返回拆分数组?

来自分类Dev

从数组中拆分数据并提取特定数据

来自分类Dev

在低维数组中拆分数组的最后一维

来自分类Dev

MATLAB:拆分数组

来自分类Dev

PySpark重新分区RDD元素

来自分类Dev

如何在pyspark中查看RDD中每个分区的内容?

来自分类Dev

php,拆分数组中的额外值后

来自分类Dev

计算每个pyspark RDD分区中的元素数

来自分类Dev

pyspark rdd拆分问题

来自分类Dev

pyspark拆分数组并获取键值

来自分类Dev

在pySpark中按条件拆分数据帧

来自分类Dev

Java对象中的拆分数组

来自分类Dev

PHP如何在变量中拆分数组

来自分类Dev

拆分数组中的元素

来自分类Dev

函数通过计算拆分数组中的值来为循环填充拆分数组

来自分类Dev

如何在pyspark中查看RDD中每个分区的内容?

来自分类Dev

如何拆分数组中的数据

来自分类Dev

自动拆分数组以输入到Matlab中的表中

来自分类Dev

如何在fortran中拆分数组?

来自分类Dev

在多个数组bash中拆分数组元素

来自分类Dev

在Javascript中的参数中拆分数组

来自分类Dev

在已知片段中拆分数组

来自分类Dev

Angularjs 拆分数组

来自分类Dev

如何在python中拆分数组中的每个值?

来自分类Dev

拆分数组 Python

来自分类Dev

拆分数组