我正在使用 spark-sql 2.4.1 和 java 8。
val country_df = Seq(
("us",2001),
("fr",2002),
("jp",2002),
("in",2001),
("fr",2003),
("jp",2002),
("in",2003)
).toDF("country","data_yr")
> val col_df = country_df.select("country").where($"data_yr" === 2001)
val data_df = Seq(
("us_state_1","fr_state_1" ,"in_state_1","jp_state_1"),
("us_state_2","fr_state_2" ,"in_state_2","jp_state_1"),
("us_state_3","fr_state_3" ,"in_state_3","jp_state_1")
).toDF("us","fr","in","jp")
> data_df.select("us","in").show()
如何从给定年份的 country_df 动态填充此 select 子句(data_df)?
即从第一个数据帧,我将获得列的值,这些是我需要从第二个数据帧中选择的列。如何才能做到这一点 ?
试过这个:
List<String> aa = col_df.select(functions.lower(col("data_item_code"))).map(row -> row.mkString(" ",", "," "), Encoders.STRING()).collectAsList();
data_df.select(aa.stream().map(s -> new Column(s)).toArray(Column[]::new));
错误 :
.AnalysisException: cannot resolve '` un `' given input columns: [abc,.....all columns ...]
那么这里有什么问题,以及如何解决这个问题?