要转换为小写,您应该使用lower()
函数(参见here http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.functions.lower) from pyspark.sql.functions
.所以你可以尝试:
import pyspark.sql.functions as F
logData = spark.createDataFrame(
[
(0,'aB'),
(1,'AaA'),
(2,'bA'),
(3,'bB')
],
('id', "value")
)
numAs = logData.filter(F.lower((logData.value)).contains('a')).count()
您提到“我正在使用以下代码来查找 A 的数量和 B 的数量。”请注意,如果您想计算某个字符的实际出现次数而不是包含该字符的行数,您可以执行以下操作:
def count_char_in_col(col: str, char: str):
return F.length(F.regexp_replace(F.lower(F.col(col)), "[^" + char + "]", ""))
logData.select(count_char_in_col('value','a')).groupBy().sum().collect()[0][0]
在上面的例子中将返回5
.
希望这可以帮助!