如何使用Scala将连接键作为变量传递到Spark数据框中

时间:2016-12-07 20:46:43

标签: scala apache-spark apache-spark-sql spark-dataframe

我正在尝试将两个数据帧的连接键关联到两个varibale中。同样我想传递给一个联接。这里我的变量包含一个键。我还可以传递多个密钥吗?

例: 第一关键: 阶> val primary_key_col = scd_table_keys_df.first()。getString(2) primary_key_col:String = acct_nbr

第二把钥匙: 阶> val delta_primary_key_col =" delta _" + primary_key_col delta_primary_key_col:String = delta_acct_nbr

** My python Code which is working
cdc_new_acct_df = delta_src_rename_df.join(hist_tgt_tbl_Y_df ,(col(delta_primary_key_col) == col(primary_key_col)) ,'left_outer' ).where(hist_tgt_tbl_Y_df[primary_key_col].isNull())

我想在Scala中实现相同功能。请建议。 尝试多种方式。

val cdc_new_acct_df = delta_src_rename_df.join(hist_tgt_tbl_Y_df ,(delta_src_rename_df({primary_key_col.mkstring(",")}) == hist_tgt_tbl_Y_df({primary_key_col.mkstring(",")}),"left_outer" )).where(hist_tgt_tbl_Y_df[primary_key_col].isNull())

:121:错误:值mkstring不是String

的成员
val cdc_new_acct_df = delta_src_rename_df.join(hist_tgt_tbl_Y_df ,(delta_src_rename_df(delta_primary_key_col.map(c => col(c))) == hist_tgt_tbl_Y_df(primary_key_col.map(c => col(c))),"left_outer" ))

:123:错误:类型不匹配;  found:Array [org.apache.spark.sql.Column]  required:String

无法解决。请建议。

1 个答案:

答案 0 :(得分:0)

我错过了变量替换。这对我有用。

ax.set_yticklabels(ax.get_yticklabels(), ...)