У меня есть общая функция c для чтения RDD и генерации Dataframe. Я вызову эту функцию дважды, один с фильтром, другой без. Есть ли способ сделать мою функцию более элегантной?
def generateDF(rawdata: Type, applyFilter: Boolean): DataFrame = {
val rdd = if(applyFilter == true) {
sc.sequenceFile[Array[Byte], String](rawdata)
.values
.filter(filterCondition)
.map(parser.parseData)
.map(addColumnFunction)
} else{
sc.sequenceFile[Array[Byte], String](rawdata)
.values
.map(parser.parseData)
.map(addColumnFunction)
}
createDataFrame(rdd, outputFieldNames)
}
Вызов функции:
val dfWithFilter = generateDF(rawdata, true)
val dfWithoutFilter = generateDF(rawdata, false)
Я новичок в Scala, вышеупомянутая функция работает как задумано, но я хотел бы узнать больше передовых методов против вышеупомянутых ситуация. Например, как я могу написать весь этот блок кода только один раз, а не повторять его?
sc.sequenceFile[Array[Byte], String](rawdata)
.values
.map(parser.parseData)
.map(addColumnFunction)
Большое спасибо за помощь!