我想使用MATLAB中的数据存储功能读取块中的大数据文件。在这种情况下,我想提出一个条件来读取每个数据块。
例如:我有一个布尔列(0或1),我想用一些大小的元素读取每个数据块,但只读布尔列等于1(一)的位置。我不想在读取数据块后消除这些行(零号),以便在每个块中始终具有相同大小的元素。此过程是使用mapreduce
方法处理数据。
在mapper函数中,我将处理每个数据块中的元素。我不希望布尔列中的数字为“1”。
实施例:
这可能吗?或者我必须找到替代方案吗?
答案 0 :(得分:0)
您可以使用数据存储功能甚至变量(列)和数据格式直接控制每个块读取的行数。但是,该功能不允许根据条件进行此类数据读取。
我看到两个直接的选择:
- 使用数据存储区获取原始数据的完整块,然后在映射器函数中对数据执行逻辑。例如,对于变量" Bool"过滤掉值为1的行将是一行的。在映射器中,在进行主要计算之前:
data = data(~data.Bool,:);
- 使用简化的mapreduce计算预处理数据。也许在映射器中,您可以按照自己想要的方式过滤数据,然后将其直接传递给身份缩减器。结果将是一个新的数据存储区,仅包含您感兴趣的数据行。