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 spark数据帧中的情况_Scala_Apache Spark_Apache Spark Sql_Apache Spark 1.4 - Fatal编程技术网

Scala spark数据帧中的情况

Scala spark数据帧中的情况,scala,apache-spark,apache-spark-sql,apache-spark-1.4,Scala,Apache Spark,Apache Spark Sql,Apache Spark 1.4,我想了解如何在新的DataFrameAPI中使用CaseWhen表达式 我在文档中看不到对它的任何引用,我看到它的唯一地方是在代码中: 我希望能够写出这样的东西: val col = CaseWhen(Seq( $"a" === lit(1), lit(10), $"a" === lit(2), lit(15), ... lit(20) )) 但这段代码不会编译,因为Seq的类型是Column而不是Expression 使用CaseWhen的正确方法是什么?老

我想了解如何在新的DataFrameAPI中使用CaseWhen表达式

我在文档中看不到对它的任何引用,我看到它的唯一地方是在代码中:

我希望能够写出这样的东西:

val col = CaseWhen(Seq(
    $"a" === lit(1), lit(10),
    $"a" === lit(2), lit(15),
    ...
    lit(20)
))
但这段代码不会编译,因为Seq的类型是Column而不是Expression


使用CaseWhen的正确方法是什么?

老实说,我不知道CaseWhen是否打算用作面向用户的API。相反,您应该使用列类型的when和other方法。使用这些方法,您可以构造CaseWhen列

val column:column=//某个列 val结果:列=列。 当$a==functions.lit1时,为10。 当$a==functions.lit2时,为15。 否则20
老实说,我不知道CaseWhen是否打算用作面向用户的API。相反,您应该使用列类型的when和other方法。使用这些方法,您可以构造CaseWhen列

val column:column=//某个列 val结果:列=列。 当$a==functions.lit1时,为10。 当$a==functions.lit2时,为15。 否则20
您可能是对的,尽管它不是私有的[slq],也没有标记为@DeveloperApi。我不能做column.expr,因为expr是受保护的。你说得对。我错过了expr被保护的消息。但我找到了另一个解决办法。我更新了答案。我希望现在可以这样做。你可能是对的,尽管它不是私有的[slq],也不是标记为@DeveloperApi的。我不能做column.expr,因为expr是受保护的。你说得对。我错过了expr被保护的消息。但我找到了另一个解决办法。我更新了答案。我希望现在能奏效。