Scala 如何基于另一列的值填充Spark DataFrame列?

Scala 如何基于另一列的值填充Spark DataFrame列?,scala,dataframe,apache-spark,apache-spark-sql,anonymous-function,Scala,Dataframe,Apache Spark,Apache Spark Sql,Anonymous Function,我有一个用例,需要从包含至少30列和数百万行的数据框中选择某些列 我使用scala和ApacheSpark从cassandra表加载这些数据 我使用以下命令选择了所需的列:df.selectcol1、col2、col3、col4 现在,我必须执行一个基本的groupBy操作,根据src_ip、src_port、dst_ip、dst_port对数据进行分组,我还想从原始数据帧的received_time列中获取最新的值。 我想要一个数据帧,在一个新列中包含不同的src_ip值及其计数和最新接收时

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

我使用scala和ApacheSpark从cassandra表加载这些数据

我使用以下命令选择了所需的列:df.selectcol1、col2、col3、col4

现在,我必须执行一个基本的groupBy操作,根据src_ip、src_port、dst_ip、dst_port对数据进行分组,我还想从原始数据帧的received_time列中获取最新的值。

我想要一个数据帧,在一个新列中包含不同的src_ip值及其计数和最新接收时间,如上次所见

我知道如何使用.with column,而且我认为.map可以在这里使用。
由于我在这一领域相对较新,我真的不知道如何进一步。我真的需要您的帮助来完成这项任务。

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

val mydf=df.groupBycolsrc_ip,colsrc_port,coldst_ip,coldst_port.aggcountreceived_time.asrow_count,maxcolreceived_time.asmax_received_time
上行将计算针对group by列接收的时间戳计数以及该group by列的最大时间戳。

假设您有一个带有src_ip、src_端口、dst_ip、dst_端口和接收时间的数据帧df,您可以尝试:

val mydf=df.groupBycolsrc_ip,colsrc_port,coldst_ip,coldst_port.aggcountreceived_time.asrow_count,maxcolreceived_time.asmax_received_time 上面的行计算针对group by列接收的时间戳计数以及该group by列的最大时间戳