![](/img/trans.png)
[英]Select a column based on another column's value in Spark Dataframe using Scala
[英]How to populate a Spark DataFrame column based on another column's value?
我有一个用例,我需要从包含至少 30 列和数百万行的dataframe
框中选择某些列。
我正在使用scala
和apache-spark
从cassandra
表加载这些数据。
我使用以下df.select("col1","col2","col3","col4")
选择了所需的列: df.select("col1","col2","col3","col4")
现在我必须执行一个基本的groupBy
操作来根据src_ip
、 src_port
、 dst_ip
、 dst_port
对数据进行src_ip
,我还想从原始dataframe
的received_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.