当前位置: 首页 > 知识库问答 >
问题:

CaseWhen in spark数据帧

易阳云
2023-03-14

我想了解如何在新的< code>DataFrame api中使用< code>CaseWhen表达式。

我在文档中看不到任何对它的引用,我唯一看到它的地方是在代码中:https://github . com/Apache/spark/blob/v 1 . 4 . 0/SQL/catalyst/src/main/Scala/org/Apache/spark/SQL/catalyst/expressions/predicates . Scala # L397

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

val col = CaseWhen(Seq(
    $"a" === lit(1), lit(10),
    $"a" === lit(2), lit(15),
    ...
    lit(20)
))

但是这段代码无法编译,因为< code>Seq属于< code>Column类型,而不是< code>Expression

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

共有1个答案

胡越泽
2023-03-14

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

val column: Column = //some column

val result: Column = column.
  when($"a" === functions.lit(1), 10).
  when($"a" === functions.lit(2), 15).
  otherwise(20)
 类似资料:
  • 我试图训练一个数据集来预测输入的文本是否来自科幻小说。我对python比较陌生,所以我不知道我到底做错了什么。 代码: 错误:回溯(最近一次呼叫上次): 文件“”,第1行,在main()中 文件"C:/用户/用户/桌面/分配/SQL /Python/DA项目/class17.py",第36行,在主model_novels() modelêselectedModel中的文件“C:/Users/use

  • null null 为什么要使用UDF/UADF而不是map(假设map保留在数据集表示中)?

  • 表元数据 下面这些方法用于获取表信息: 列出数据库的所有表 $this->db->list_tables(); 该方法返回一个包含你当前连接的数据库的所有表名称的数组。例如: $tables = $this->db->list_tables(); foreach ($tables as $table) { echo $table; } 检测表是否存在 $this->db->table_

  • 我需要根据一些共享的键列将许多数据帧连接在一起。对于键值RDD,可以指定一个分区程序,以便具有相同键的数据点被洗牌到相同的执行器,因此连接更有效(如果在之前有与洗牌相关的操作)。可以在火花数据帧或数据集上做同样的事情吗?

  • 问题内容: 我想获取基于条件选择的数据帧行数。我尝试了以下代码。 输出: 输出显示数据帧中每一列的计数。相反,我需要获得满足以上所有条件的单一计数?这该怎么做?如果您需要有关我的数据框的更多说明,请告诉我。 问题答案: 您要的是所有条件都为真的条件,所以答案是len,除非我误解了您的要求

  • 我有一个如下所示的数据帧: 我需要提取lat=30.75和lon 76.25的行,对于我使用的行: 但这表明了这个错误:

  • 数据与数据结构 1. 数据 1.1 数据(data) 数据:是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。 1.2 数据大致分的两类:(1)数值性数据;(2)非数值数据 数值性数据:主要包括整数、浮点数、复数、双精度数等,主要用于工程和科学计算,以及商业事务处理。 非数值数据:主要包括字符和字符串,以及文字、图形、图像、语音等数据。 1.3