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
Scala Spark java.lang.UnsupportedOperationException:空集合_Scala_Apache Spark_Spark Dataframe - Fatal编程技术网

Scala Spark java.lang.UnsupportedOperationException:空集合

Scala Spark java.lang.UnsupportedOperationException:空集合,scala,apache-spark,spark-dataframe,Scala,Apache Spark,Spark Dataframe,运行此代码时,在某些情况下会出现空集合错误 val result = df .filter(col("channel_pk") === "abc") .groupBy("member_PK") .agg(sum(col("price") * col("quantityOrdered")) as "totalSum") .select("total

运行此代码时,在某些情况下会出现空集合错误

    val result = df
                  .filter(col("channel_pk") === "abc")
                  .groupBy("member_PK")
                  .agg(sum(col("price") * col("quantityOrdered")) as "totalSum")
                  .select("totalSum")
                  .rdd.map(_ (0).asInstanceOf[Double]).reduce(_ + _)
错误发生在此行:

.rdd.map(_ (0).asInstanceOf[Double]).reduce(_ + _)

当集合为空时,我希望
result
等于0。如何操作?

错误仅出现在该行,因为这是您第一次执行某些操作。在此之前,火花不会产生任何效果(懒惰)。你的df是空的。 您可以通过在以下内容之前添加来验证:

断言(!df.take(1.isEmpty)

错误仅出现在该行,因为这是您第一次执行某些操作。在此之前,火花不会产生任何效果(懒惰)。你的df是空的。 您可以通过在以下内容之前添加来验证:

断言(!df.take(1.isEmpty)

当集合为空时,我希望结果等于0。我怎么做

在进行聚合之前,只需检查数据帧是否有一些行

val result = if(df.take(1).isEmpty) 0 else df
  .filter(col("channel_pk") === "abc")
  .groupBy("member_PK")
  .agg(sum(col("price") * col("quantityOrdered")) as "totalSum")
  .select("totalSum")
  .rdd.map(_(0).asInstanceOf[Double]).reduce(_ + _)
或者您也可以使用
count

val result = if(df.count() == 0) 0 else df
  .filter(col("channel_pk") === "abc")
  .groupBy("member_PK")
  .agg(sum(col("price") * col("quantityOrdered")) as "totalSum")
  .select("totalSum")
  .rdd.map(_(0).asInstanceOf[Double]).reduce(_ + _)
当集合为空时,我希望结果等于0。我怎么做

在进行聚合之前,只需检查数据帧是否有一些行

val result = if(df.take(1).isEmpty) 0 else df
  .filter(col("channel_pk") === "abc")
  .groupBy("member_PK")
  .agg(sum(col("price") * col("quantityOrdered")) as "totalSum")
  .select("totalSum")
  .rdd.map(_(0).asInstanceOf[Double]).reduce(_ + _)
或者您也可以使用
count

val result = if(df.count() == 0) 0 else df
  .filter(col("channel_pk") === "abc")
  .groupBy("member_PK")
  .agg(sum(col("price") * col("quantityOrdered")) as "totalSum")
  .select("totalSum")
  .rdd.map(_(0).asInstanceOf[Double]).reduce(_ + _)

在转换为rdd之前,是否检查数据帧是否有行?我想是的empty@RameshMaharjan:是的,我的问题是如何检查它是否为空,如果为空则返回0?@RameshMaharjan:请检查我的问题(最后一行)。我不知怎么把它从问题中删掉了。谢谢。@RameshMaharjan:所以,我不明白如何从Noam的断言示例中获取0。@RameshMaharjan:
如果(assert(df.take(1.isEmpty))result=0,其他结果…
?在转换为rdd之前,是否检查数据帧是否有行?我想是的empty@RameshMaharjan:是的,我的问题是如何检查它是否为空,如果为空则返回0?@RameshMaharjan:请检查我的问题(最后一行)。我不知怎么把它从问题中删掉了。谢谢。@RameshMaharjan:所以,我不明白如何从Noam的断言示例中获取0。@RameshMaharjan:
如果(assert(df.take(1.isEmpty))result=0,则结果为…
?我注意到我不知怎么删除了邮件的最后一行。当集合为空时有一个问题
,我希望结果等于0。我该怎么做?
然后用if语句替换assert,当我注意到我以某种方式删除了邮件的最后一行时,if语句返回0。当集合为空时有一个问题
,我希望结果等于0。如何操作?
然后用if语句替换assert,该语句在为空时返回0