在 SQL 表上使用 pyspark 编写 where 查询

Posted

技术标签:

【中文标题】在 SQL 表上使用 pyspark 编写 where 查询【英文标题】:Writing where query using pyspark on SQL table 【发布时间】:2019-06-20 08:56:51 【问题描述】:

我正在使用 pyspark 查询 sql 表。

如果我有一个包含两列 (value, isDelayed) 的 sql 表,其中 "value" 是双精度类型,而 "isDelayed" > 值为 0 或 1。如何使用 pyspark 聚合查询编写查询,当“isDelayed”为 1 时,该查询给出“值”的总和。

我已经尝试过下面给出错误的代码

def __main__(self, data):
    delayedData = data.where(col('isDelayed').cast('int')==='1')
    groupByIsDelayed = delayedData.agg(sum(total))
    return groupByIsDelayed

我来了

“语法错误:无效语法”

在下一行

delayedData = data.where(col('isDelayed').cast('int')==='1')

【问题讨论】:

【参考方案1】:

data.where(col('isDelayed').cast('int')==='1') 替换为data.where(col('isDelayed').cast('int') == 1)

仅 2 =(python 中的等号运算符是 2 = 符号)1 不带引号(因为您比较的是 int,而不是 string)

data.where("isDelayed=1")

【讨论】:

以上是关于在 SQL 表上使用 pyspark 编写 where 查询的主要内容,如果未能解决你的问题,请参考以下文章

pyspark 数据框使用 show() 出错

PySpark:java.lang.ClassCastException

如何编写这两个(ANSI)SQL 查询?

在 pyspark 中编写自定义 UDAF

使用 pyspark 对 SQL Server JDBC 使用 Windows 身份验证

添加新的可空列后,是不是需要更新某个表上的每个 C# SQL 查询?