如何解决如何基于另一列的值填充Spark DataFrame列?
我有一个用例,需要从dataframe
中选择至少包含30列和数百万行的列。
我正在使用cassandra
和scala
从apache-spark
表中加载此数据。
我使用df.select("col1","col2","col3","col4")
现在,我必须执行基本的groupBy
操作,才能根据src_ip
,src_port
,dst_ip
,dst_port
对数据进行分组,而且我还想具有原始received_time
的{{1}}列中的最新值。
我想要一个dataframe
dataframe
值的distinct
及其值src_ip
和最新的count
在新列中作为received_time
。
我知道如何使用last_seen
,而且我认为可以在这里使用.withColumn
。
由于我在这个领域还比较陌生,所以我真的不知道该如何进一步。我真的可以使用您的帮助来完成此任务。
解决方法
假设您的数据帧df为src_ip,src_port,dst_ip,dst_port and received_time
,则可以尝试:
val mydf = df.groupBy(col("src_ip"),col("src_port"),col("dst_ip"),col("dst_port")).agg(count("received_time").as("row_count"),max(col("received_time")).as("max_received_time"))
上一行计算按列分组接收的时间戳计数以及该列分组的最大时间戳。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。