繁体   English   中英

如何根据另一列的值填充 Spark DataFrame 列?

[英]How to populate a Spark DataFrame column based on another column's value?

我有一个用例,我需要从包含至少 30 列和数百万行的dataframe框中选择某些列。

我正在使用scalaapache-sparkcassandra表加载这些数据。

我使用以下df.select("col1","col2","col3","col4")选择了所需的列: df.select("col1","col2","col3","col4")

现在我必须执行一个基本的groupBy操作来根据src_ipsrc_portdst_ipdst_port对数据进行src_ip ,我还想从原始dataframereceived_time列中received_time最新值。 原始数据帧

我想要一个具有distinct src_ip值的dataframe src_ip ,它们的count和最新的received_time在新列中作为last_seen

我知道如何使用.withColumn并且我认为.map()可以在这里使用。 由于我在这个领域比较新,我真的不知道如何进一步。 我真的可以利用你的帮助来完成这项任务。

假设您有一个带有src_ip,src_port,dst_ip,dst_port and received_time的数据帧 df ,您可以尝试:

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"))

上面的行计算针对按列分组的时间戳计数以及该按列分组的最大时间戳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM