划分不同DataFrame的两列

Sta*_*ter 3 python apache-spark apache-spark-sql pyspark

我正在使用Spark对用户日志文件进行探索性数据分析.我正在做的一项分析是每个主机每天的平均请求.因此,为了计算平均值,我需要将DataFrame的总请求列除以DataFrame的数字唯一Request列.

total_req_per_day_df = logs_df.select('host',dayofmonth('time').alias('day')).groupby('day').count()

avg_daily_req_per_host_df = total_req_per_day_df.select("day",(total_req_per_day_df["count"] / daily_hosts_df["count"]).alias("count"))
Run Code Online (Sandbox Code Playgroud)

这就是我用PySpark编写的用来确定平均值的内容.这是我得到的错误日志

AnalysisException: u'resolved attribute(s) count#1993L missing from day#3628,count#3629L in operator !Project [day#3628,(cast(count#3629L as double) / cast(count#1993L as double)) AS count#3630];
Run Code Online (Sandbox Code Playgroud)

注意:daily_hosts_df和logs_df缓存在内存中.如何划分两个数据帧的计数列?

zer*_*323 15

无法从另一个表中引用列.如果要组合数据,join首先必须使用与此类似的内容:

from pyspark.sql.functions import col

(total_req_per_day_df.alias("total")
    .join(daily_hosts_df.alias("host"), ["day"])
    .select(col("day"), (col("total.count") / col("host.count")).alias("count")))
Run Code Online (Sandbox Code Playgroud)