簡體   English   中英

如何使用非Lambda函數定義Spark RDD轉換

[英]How to define Spark RDD transformation with non-Lambda Function

我最近開始使用Spark和Java。 我目前正在嘗試RDD轉換和操作。 目前,我正在從包含某些DateTime字段的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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM