loops - Pyspark:比较值,如果为真,则执行语句
问题描述
我试图使这个循环工作,我将 approx_count_distinct 的值与阈值进行比较。我想在 distinct_count <2 时执行 if 语句。但它总是返回“NULL”,即使当我打印大约时我得到正确的结果(小于 2)。我究竟做错了什么?
for col in s:
approx = df.agg(approx_count_distinct(col).alias("count"))
if approx.collect()[0] < 2:
print(col)
解决方案
您正在对 ROW 类型执行 IF 条件,您能否检查一下 approx.collect()[0] 的类型是什么,它应该是 int 以支持您正在执行的 if 条件。
type(approx.collect()[0])
您需要将其更改为**if approx.collect()[0][0] < 2:
**
试试这个,它应该工作:
s = ['a','b','c','d','e']
for col in s:
approx = spark.sql("select 1 AS a")
if approx.collect()[0][0] < 2:
print(col)
推荐阅读
- android - Squarespace Announcement Bar cut off on Android Chrome Browser
- ubuntu - vscode 终端为空/不存在
- gradle - Remote gradle build daemon
- selenium - Selenium and AutoHotkey - How to get the size of table rows/column?
- android - Recyclerview with two ViewTypes from two SQL Tables/ Cursors: What is the best way?
- google-cloud-platform - Any chance of restoring a deleted gcloud sql instance?
- c# - Unity 中的 RandomName 生成器
- c++ - 如何仅使用 iostream 库打印二叉搜索树中的所有节点?
- flutter - 基于字符串中唯一字符的 Flutter-Conditional 格式。可能吗?
- amazon-web-services - 如何从本地客户端应用程序访问 VPC Endpoint 接口?