我正在将Scala 2.11与Spark 2.1一起使用
我有一个MutableList [String]定义为变量objectKeys
我正在尝试使用Spark并行化,如下所示:
val numPartitioning = 10
val rdd = sc.parallelize(objectKeys, numPartitioning);
val x = rdd.mapPartitions(read_files_from_list(objectKeys))
def read_files_from_list(keys:MutableList[String]): Boolean = {
// my logic to iterate over keys
if success
return true;
else
return false;
}
但是我遇到错误类型不匹配;找到:布尔值必需:Iterator [String]⇒Iterator [?]在涉及默认参数的应用程序中发生错误。
要使udf'read_files_from_list'接受MutableList [String]并返回布尔值
,我需要做哪些更改?答案 0 :(得分:1)
mapPartitions需要迭代器到迭代器的转换。您以布尔值返回常数值true / false。
在这里如何编写函数
def read_files_from_list(keys:Iterator[String]): Iterator[Boolean] = keys.map( key => {
// my logic to iterate over keys
if success
return true;
else
return false;
})