gpt4 book ai didi

java - 如何使用非 Lambda 函数定义 Spark RDD 转换

转载 作者:行者123 更新时间:2023-11-30 02:38:03 24 4
gpt4 key购买 nike

我最近开始使用 Spark 和 Java。我目前正在尝试 RDD 转换和操作。目前,我正在从包含一些日期时间字段的 csv 中读取数据,然后应用过滤器仅保留那些小于 2 天的行,最后检查生成的 RDD 是否为空。我编写了一个简单的代码片段,可以在最低限度上完成我想要的任务。

Function<List<String>, Boolean> filterPredicate = row -> new DateTime(row.get(1).isAfter(dtThreshold);

sc.textFile(inputFilePath)
.map(text -> Arrays.asList(text.split(",")))
.filter(filterPredicate)
.isEmpty();

在这个简单的情况下,我假设 DateTime 对象始终位于第一列。我现在想扩展它以使用多个列索引。但要做到这一点,我需要能够定义一个包含多行的谓词函数。这就是我将谓词函数定义与转换代码分开的原因。

我应该如何定义这样的函数?

最佳答案

使用大括号表示法...

   Function<List<String>, Boolean> filterPredicate = row -> {
boolean isDateAfter = new DateTime(row.get(1)).isAfter(dtThreshold);
boolean hasName = row.get(2) != "";
return isDateAfter && hasName;
}

关于java - 如何使用非 Lambda 函数定义 Spark RDD 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42580201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com