在Spark Scala中按照条件创建DF

时间:2019-11-20 14:55:24

标签: scala apache-spark

我是Spark Scala的一名新开发人员,并且(我认为...)有一个简单的问题。 我有一个像这样的“客户”表:

ID   City   Timestamp
1         NY        0
1         WDC       10
1         NY        11    
2         NY        20
3         WDC       15

我想基于表1值的不同条件创建第二个表。

例如:

  • 如果ID = 1,我将存储与第一个表相同的值
  • 如果ID = 2,我将存储ID,城市,时间戳/ 2
  • 如果ID = 3,我将存储ID,城市,0作为时间戳。

我不熟悉Map概念,我只想知道Spark Scala中进行此类处理的逻辑。我是否应该创建例如3 DF,最后在三个Dataframe之间进行并集?

请帮助我输入代码(然后:我将更改其他条件的值,但是我只想了解逻辑)。例如:

var df_input = spark.sql("""select * from clients
""")

val df1 = new (id STRING, city STRING, timestamp STRING);
val df2;
val df3;


if df_input.id === 1 {
df1.id = df_input.id
df1.city = df_input.city
df1.timestamp = df_input.timestamp

} else if df_input.id === 2 {
df2.timestamp = df_input.timestamp / 2
}
var result = df1.union(df2).union(df3)

对不起,我的代码不好,但我对地图概念和Scala并不真正熟悉。我更熟悉Java

0 个答案:

没有答案