Здесь нет фильтра. И col("is_fav") == 1
, и col("is_fav") == 0)
являются просто булевыми выражениями, а count
действительно не заботятся об их значении до тех пор, пока оно определено.
Существует множество способов решить эту проблему, например, используя simple sum
:
from pyspark.sql.functions import sum, abs
gpd = df.groupBy("f")
gpd.agg(
sum("is_fav").alias("fv"),
(count("is_fav") - sum("is_fav")).alias("nfv")
)
или сделать игнорированные значения неопределенными (aka NULL
):
exprs = [
count(when(col("is_fav") == x, True)).alias(c)
for (x, c) in [(1, "fv"), (0, "nfv")]
]
gpd.agg(*exprs)
Более гибкий подход заключается в создании файла с именем setenv.bat
/ setenv.sh
(выберите правильный для вашей платформы) в $CATALINA_BASE/bin
и установите там JAVA_HOME
. Таким образом, это влияет только на Tomcat, а не на что-то еще, что вы используете. Это также упрощает запуск нескольких различных установок Tomcat на разных JVM.
JAVA_HOME
в .bash_profile
path
/ classpath
например
JAVA_HOME=/usr/local/java
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
export JAVA_HOME PATH CLASSPATH