Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Spark-不从scala中的映射值获取int_Scala_Apache Spark_Pyspark_Spark Dataframe - Fatal编程技术网

Spark-不从scala中的映射值获取int

Spark-不从scala中的映射值获取int,scala,apache-spark,pyspark,spark-dataframe,Scala,Apache Spark,Pyspark,Spark Dataframe,我有一个对象被定义为 pLinkGroupsByP: Map[String, Set[(String, Int)]] 我试图在要返回的对象中获取Int,如果它存在,否则返回0,因此.getOrElse(0) (Doc.productType.id)用于访问键 (Doc.Group.id)用于访问值的1st部分 (container.containerDoc.GroupOrder)用于访问值的第二部分,这是我需要分配给结果的部分 但是,无论发生什么情况,我都只能得到地图中第一个值的第一个数字

我有一个对象被定义为

pLinkGroupsByP: Map[String, Set[(String, Int)]]
我试图在要返回的对象中获取Int,如果它存在,否则返回
0
,因此
.getOrElse(0)

  • (Doc.productType.id)
    用于访问
  • (Doc.Group.id)
    用于访问值的1st部分
  • (container.containerDoc.GroupOrder)
    用于访问值的第二部分,这是我需要分配给结果的部分
但是,无论发生什么情况,我都只能得到地图中第一个值的第一个数字。我只需要将值中的数字赋回到这个try语句中的结果

样本数据为

Map["pro-ucw32, Set[(PRD-1292, 5)]]

我想你可以用简单的if-else得到结果

val result:Int = if(pLinkGroupsByP(Doc.productType.id).contains(Doc.Group.id,container.containerDoc.GroupOrder)) container.containerDoc.GroupOrder else 0
“元组到映射”转换值被分配一个元组到映射

relatedDoc.linkGroup.id is a key being mapped and retunred if its a number greater than 1 it will be returned and then a 0

因此,要么您的数据都是0,要么您有一个异常。@Marcin我超过了零,现在我添加了这个
(Doc.Group.id,container.containerDoc.GroupOrder)。\u 2
它将返回数字,但只返回值的第一个数字。i、 它只给了我
7
,即使是
3008
,甚至认为它应该是
5
。请看一下样品的图片data@dedpo你能把单据的申报单包括进去吗?谢谢,您是否考虑过简化数据结构,使用带有复合键的简单映射,并将int作为值?
 val tupleToMap = pLinkGroupsByP(Doc.productType.id).toMap
    tupleToMap(relatedDoc.lkGroup.id).GetorElse(0)
relatedDoc.linkGroup.id is a key being mapped and retunred if its a number greater than 1 it will be returned and then a 0