Spark 数据帧的 null 值和 countDistinct

2023-11-26

我有一个非常简单的数据框

  df = spark.createDataFrame([(None,1,3),(2,1,3),(2,1,3)], ['a','b','c'])

  +----+---+---+
  |   a|  b|  c|
  +----+---+---+
  |null|  1|  3|
  |   2|  1|  3|
  |   2|  1|  3|
  +----+---+---+

当我申请一个countDistinct在此数据框上,我发现根据方法不同的结果:

第一种方法

  df.distinct().count()

2

这是我的结果,除了最后两行相同,但第一行与其他两行不同(因为空值)

第二种方法

  import pyspark.sql.functions as F
  df.agg(F.countDistinct("a","b","c")).show()

1

看来是这样的方式F.countDistinct涉及null价值对我来说并不直观。

对你来说它看起来是错误还是正常?如果正常的话,我如何编写一些输出与第一种方法完全相同的结果但与第二种方法具有相同精神的东西。


countDistinct工作方式与Hive count(DISTINCT expr[, expr]):

count(DISTINCT expr[ expr]) - 返回所提供的表达式唯一且非 NULL 的行数。

不包括第一行。这对于 SQL 函数来说很常见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 数据帧的 null 值和 countDistinct 的相关文章

随机推荐

  • NSCollectionViewItem 从不实例化

    我在这里有点迷失 我创建了一个像 colorPicker 一样的按钮 单击它会在弹出窗口中显示一个 collectionView 我首先使用包含视图 collectionView 嵌入为scrollView clipView 的nib fi
  • 如何在 Nvidia Shield 上正确计时 Android RenderScript 代码

    我在 RenderScript 中实现了一个小型 CNN 想要分析不同硬件上的性能 在我的 Nexus 7 上 时间有意义 但在 NVIDIA Shield 上则不然 CNN LeNet 采用队列中的 9 层实现 计算按顺序执行 每一层都是
  • python将数字添加到字符串[重复]

    这个问题在这里已经有答案了 尝试将 count int 添加到字符串末尾 网址 Code count 0 while count lt 20 Url http www ihiphopmusic com music page Url Url
  • 如何使用 bluebird 来 promisify MySql 函数?

    前段时间我决定从 PHP 切换到 Node 在我的第一个项目中 我不想使用任何 ORM 因为我认为我不需要让我的生活变得如此复杂 学习另一件事 目前我正在学习 Node 和 Angular 因此我决定使用 mysql 包 而不需要使用 my
  • ng-focus 和 ng-blur 事件在 Angularjs 中未触发

  • Android“repo”文档可用吗?

    关于用于 Android 存储库管理的谷歌 repo 工具的唯一文档是 https sites google com a android com opensource download using repo 这比什么都没有 可用的帮助与键入
  • SwingWorker 的原理是什么?

    据我所知 它用于在 swing 应用程序中调度一个新线程来执行一些 后台 工作 但是使用它而不是 普通 线程有什么好处 使用新线程并在完成时使用 SwingUtilities invokeLater 调用某些 GUI 方法是不一样的 我在这
  • 如何在 SQL Server 中创建外键?

    我从来没有为 SQL Server 手工编码 过对象创建代码 并且外键声明在 SQL Server 和 Postgres 之间似乎是有区别的 到目前为止 这是我的 sql drop table exams drop table questi
  • 为什么我的 Python App Engine 应用程序使用 Translate API 时出现 ImportError 错误:没有名为 apiclient.discovery 的模块?

    我收到这个错误谷歌应用程序引擎Python使用过谷歌翻译API 但不知道怎么解决
  • 我可以将 PHPUnit 打包为 phar 吗?

    我想将 PHPUnit 和各种其他测试依赖项打包到 phar 中并将其放入 svn 中 这样我就可以在任何客户端机器上运行 phpunit 而不需要 pear 这可以做到吗 当前状态 phpunit phar 的工作已开始于phpunit
  • 使用类中的静态函数而不命名类

    如何访问类中的函数而不必每次都命名该类 我知道如何使用 using 这样我就不必命名命名空间 但我希望有一种方法可以处理这个静态函数 这样我就可以像调用同一个类中的函数一样调用它们 使用静态yournamespace yourclassna
  • Date.getTime() 与 Date.getTime() 对比日期.now()

    我注意到 now 只能由 Date 对象调用 getTime 只能由日期实例调用 var dd1 new Date console log dd1 now Throws error gt TypeError Object Mon Aug 1
  • 如何在 TypeScript 文件中调用 NodeJS?

    如何加载常规 NodeJS 模块 来自node modules 从一个TypeScript class 当我尝试编译时 ts文件包含 var sampleModule require modulename 编译器提示我不能在此范围内使用 r
  • 核心数据加密

    我有关于核心数据加密的问题 我将一些敏感的用户数据存储在 Core Data SQLite 数据库中 关键值都是可转换的 我使用 AES256 来 即时 加密和解密它们 包括每个值的单独 IV 加密密钥是用户选择的密码的 SHA512 哈希
  • 获取流中符合条件的第一个元素

    如何获取流中与条件匹配的第一个元素 我已经尝试过这个但不起作用 this stops stream filter Stop s gt s getStation getName equals name 该标准不起作用 过滤器方法是在 Stop
  • 使用 Powershell 将 XML 转换为哈希表

    我想转换 XML
  • 扩展打字稿接口

    在 TypeScript 中扩展 Express Request 接口时 我遇到了这个问题 我想使用外部库定义 但无法导入外部库 因为它会导致错误 gt 错误 4 28 TS1147 内部模块中的导入声明无法引用外部模块 编辑 这是一个 d
  • ReferenceError:未定义要求

    我目前正在开发 Mozilla Firefox 插件 我已经设置了一个面板并附加了一个内容脚本 我需要在内容脚本和 main js 之间进行通信 我为此使用 addon sdk 的端口 api 然而由于某种原因 我什至无法在两者之间传递简单
  • 向量储备 C++

    我有一个非常大的多维向量 其大小一直在变化 当我只知道大小的近似值时 使用 vector reserve 函数有什么意义吗 所以基本上我有一个向量 A 256 256 x y 其中 程序中的每次迭代 x 都会从 0 变化到 50 然后再次变
  • Spark 数据帧的 null 值和 countDistinct

    我有一个非常简单的数据框 df spark createDataFrame None 1 3 2 1 3 2 1 3 a b c a b c null 1 3 2 1 3 2 1 3 当我申请一个countDistinct在此数据框上 我发