如何使用 mapPartitions 函数将 Rdd 转换为数据集
Posted
技术标签:
【中文标题】如何使用 mapPartitions 函数将 Rdd 转换为数据集【英文标题】:How to convert Rdd to dataset using mapPartitions Function 【发布时间】:2019-10-06 08:06:09 【问题描述】:我正在尝试将 java spark RDD 转换为数据集。
根据火花文档。 mapPartitions 比 map 函数快。
这将有助于提高火花的性能。
【问题讨论】:
不相信你的假设和答案和问题齐头并进 convert RDD to Dataset in Java Spark的可能重复 或***.com/questions/41302666/… 【参考方案1】:下面是java代码。
JavaRDD<UserData> UserRowRDD = userSuccessRDD.mapPartitions(new FlatMapFunction<Iterator<String>, UserData>()
@Override
public Iterator call(Iterator<String> input) throws Exception
List<UserData> result = new ArrayList<>();
while (input.hasNext())
result.add(Util.getEnrichedUser(UserHeader, input.next()));
return result.iterator();
);
public static UserData getEnrichedUser(String[] header, String rddString)
String[] parts = rddString.split("\\^");
UserData output = new UserData();
for (int i = 0; i < parts.length; i++)
try
BeanUtils.setProperty(output, header[i], parts[i]);
catch (IllegalAccessException | InvocationTargetException e)
// TODO Auto-generated catch block
e.printStackTrace();
return output;
【讨论】:
以上是关于如何使用 mapPartitions 函数将 Rdd 转换为数据集的主要内容,如果未能解决你的问题,请参考以下文章
如何将列添加到 mapPartitions 内的 org.apache.spark.sql.Row
Spark mapPartitions 及mapPartitionsWithIndex算子