如何从Java中的Dataframe编码中选择常量值

时间:2016-05-02 06:22:53

标签: java apache-spark dataframe apache-spark-sql bigdata

我有一个固定列数的数据帧df1。我已将内连接应用于另一个数据帧df2。

然而,在写入选择时,我需要选择一些我目前无法使用的常数。

我已经阅读了scala中的示例,但相应的java无效。

df1.join(df2).filter(df1.col("a1").$eq$eq$eq(df2.col("a1")))
.select(df1.col("a1"), df1.col("a2"), df2.col("a2"), 8)

建议选择8的方法,如上例所示。

我也知道withColumn api但不确定实现。

感谢。

2 个答案:

答案 0 :(得分:6)

这应该有用。

val joinedDF = df1.join(df2).filter(df1.col("a1").$eq$eq$eq(df2.col("a1")))
.select(df1.col("a1"), df1.col("a2"), df2.col("a2")).withColumn("constant", lit(8))

即如果要添加整数。如果要添加常量字符串,请在选择

后使用
.withColumn("constantString",lit("some_string"))

答案 1 :(得分:2)

如何使用纯SQL执行此任务?

df1.registerAsTempTable("df1");
df2.registerAsTempTable("df2");

val joinedDf = hc.sql("Select df1.a1, df1.a2, df2.a2, 8 from df1 inner join df2 on df1.a1 = df2.a1");