将RDD转换为Map列表

时间:2016-09-26 16:50:35

标签: java lambda spark-streaming anonymous-function rdd

我需要将每个RDD转换为NavigableMap并在List<NavigableMap<byte[], List<Map<String, String>>>>中存储在匿名函数中。我正在JavaPairDStream<ImmutableBytesWritable, Put> puts上工作。

到目前为止我所拥有的:

puts.foreachRDD(r ->
    List<NavigableMap<byte[], List<Cell>>> l = r.map(t ->
        t._2().getFamilyCellMap()).collect();
    return null;
});

这会在.collect()处抛出NotSerializableException,因为Cell不可序列化。

所以我需要以某种方式将Cell转换为匿名函数中的Map<String, String,并返回List<NavigableMap<byte[], List<Map<String, String>>>>让我使用.collect()

没有太多的Java 8经验,我几乎陷入困境。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这就是我最终的目的。我在primitives之前需要collecting。我试图收集.getFamilyCellMap()的{​​{1}}的返回值,而不是map

然后我在serializable之前将其转回map

以下是assertions代码:

Java

希望这可以帮助有需要的人。