【发布时间】:2023-04-10 00:34:01
【问题描述】:
我正在对从 Avro Schema 派生的 RDD 进行转换。我的 Avro 类看起来像这样:
public class myAvroSchema {
public String myKey;
public Collection<Value> myValues;
public Object someOtherObject;
}
我当前对数据集进行的转换如下:
JavaRDD<myAvroSchema> myResult = AvroRDD.create(mySparkContext);
myResult.filter(aResult -> !aResult.getmyValues().isEmpty())
.mapToPair(aResult -> Tuple.of(aResult.getKey(), aResult.getMyValues());
这给了我一个JavaRDD<String, Collection<Value>>,但我真正想要的是返回JavaRDD<String, Value>。
我不知道如何获取我的 <Key>,Collection<Value> 对并将值展平,以便现在有多行具有相同的键,但每行的值不同。
例如,假设我的结果如下所示:
<KeyA, [Value1, Value2]>
<KeyB, [Value3, Value4]>
我想把它改成这样:
<KeyA, Value1>
<KeyA, Value2>
<KeyB, Value3>
<KeyB, Value4>
【问题讨论】:
标签: java apache-spark mapreduce rdd