Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala ApacheSpark:reduceByKey的自定义函数-缺少方法的参数_Scala_Apache Spark_Rdd_Normalize - Fatal编程技术网

Scala ApacheSpark:reduceByKey的自定义函数-缺少方法的参数

Scala ApacheSpark:reduceByKey的自定义函数-缺少方法的参数,scala,apache-spark,rdd,normalize,Scala,Apache Spark,Rdd,Normalize,我正在尝试规范化数据集(将向量中所有属性的值转换为“0-1”范围)。 我为数据集中的所有记录创建了一个元组RDD(attrib name,attrib value),如下所示: val attribMap : RDD[(String,DoubleDimension)] = contactDataset.flatMap( contact => { List(

我正在尝试规范化数据集(将向量中所有属性的值转换为“0-1”范围)。 我为数据集中的所有记录创建了一个元组RDD(attrib name,attrib value),如下所示:

val attribMap : RDD[(String,DoubleDimension)] = contactDataset.flatMap( 
                          contact => { 
                            List(
                              ("dage",contact.dage match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("dancstry1",contact.dancstry1 match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("dancstry2",contact.dancstry2 match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("ddepart",contact.ddepart match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("dhispanic",contact.dhispanic match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("dhour89",contact.dhour89 match { case Some(value) => DoubleDimension(value) ; case None => null })
                            )
                          }
                        )
def getMax( a : DoubleDimension, b : DoubleDimension ) : DoubleDimension = {
if (a > b) a 
else b 
}

def getMin( a : DoubleDimension, b : DoubleDimension) : DoubleDimension = {
if (a < b) a 
else b 
}
这里,contactDataset的类型为RDD[Contact]。Contact类的字段类型为Option[Long]

DoubleDimension是双数据类型上的简单包装器。它扩展了有序特征,实现了相应的比较方法和等价方法

要获得用于计算归一化值的最大和最小属性向量

maxVector = attribMap.reduceByKey( getMax )
minVector = attribMap.reduceByKey( getMin )
getMax和getMin的实现如下:

val attribMap : RDD[(String,DoubleDimension)] = contactDataset.flatMap( 
                          contact => { 
                            List(
                              ("dage",contact.dage match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("dancstry1",contact.dancstry1 match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("dancstry2",contact.dancstry2 match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("ddepart",contact.ddepart match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("dhispanic",contact.dhispanic match { case Some(value) => DoubleDimension(value) ; case None => null }),
                              ("dhour89",contact.dhour89 match { case Some(value) => DoubleDimension(value) ; case None => null })
                            )
                          }
                        )
def getMax( a : DoubleDimension, b : DoubleDimension ) : DoubleDimension = {
if (a > b) a 
else b 
}

def getMin( a : DoubleDimension, b : DoubleDimension) : DoubleDimension = {
if (a < b) a 
else b 
}
def getMax(a:DoubleDimension,b:DoubleDimension):DoubleDimension={ 如果(a>b)a 其他b } def getMin(a:DoubleDimension,b:DoubleDimension):DoubleDimension={ 如果(a 我在调用getMax和getMin方法时遇到编译错误,声明:

[错误]…/com/ameyam/input_generator/DatasetReader.scala:117:错误:类DatasetReader中的getMax方法缺少参数

[错误]如果要将此方法视为部分应用的函数,请使用带“\u1”的方法

[错误]maxVector=attribMap.reduceByKey(getMax)

[错误]…/com/ameyam/input_generator/DatasetReader.scala:118:错误:类DatasetReader中的getMin方法缺少参数

[错误]如果要将此方法视为部分应用的函数,请使用带“\u1”的方法

[错误]minVector=attribMap.reduceByKey(getMin)

我不确定我在这里做错了什么。我的RDD是成对的RDD,据我所知,我可以向它传递任何方法,只要函数的类型是f:(V,V)=>V


我真的被困在这里了。请提供帮助。

我刚刚运行了一个简化版本,没有问题……您的代码中是否有另一个getMax或getMin?在方法名称后附加一个
\u
是否有效(在调用站点)?