当前位置: 首页 > 知识库问答 >
问题:

如何从spark scala dataframe中包含列名的列表中获取列值

宿嘉庆
2023-03-14

定义了一个配置,其中包含每个表的列列表,用作dedup键

例如:配置1:

val lst = List(section_xid, learner_xid) 

这些列需要用作重复数据消除键。这个列表是动态的,有些表中有1个值,有些表中有2或3个值

我想做的是从这个列表中建立一个键列

df.
.withColumn( "dedup_key_sk", uuid(md5(concat($"lst(0)",$"lst(1)"))) )  

我如何使这个动态的列表适用于任意数量的列。我试过这么做

df.withColumn("dedup_key_sk", concat(Seq($"col1", $"col2"):_*))

为了实现这一点,我必须将列表转换为Df,列表中的每个值都需要在单独的列中,我无法理解这一点。

试过这么做但没用

val res = sc.parallelize(List((lst))).toDF

欢迎任何意见,谢谢

共有1个答案

姬浩渺
2023-03-14

字符串列表可以映射到列列表(使用functions.col)。然后,该列列表可以与conat一起使用:

val lst: List[String] = List("section_xid", "learner_xid")
df.withColumn("dedup_key_sk", concat(lst.map(col):_*)).show()
 类似资料:
  • 问题内容: 我的字符串列表如下所示: 我的期望是,我想检查父列表是否包含 序列 子列表,然后基于子列表获取父列表中的开始索引和结束索引。 从上面的示例: 我尝试使用方法,但它不在乎列表项的顺序,因此无法从此方法获取开始和结束索引。 我正在寻找最快的方法,因为我的列表中有很多数据,而且我必须从许多输入字符串中进行搜索。 任何帮助,将不胜感激! 更新 : 我需要获取所有子列表的索引都包含在父列表中。例

  • 问题内容: 但是我还需要知道: 如何在 Microsoft SQL Server (以我的情况为2008)中完成此操作? 问题答案: 您可以通过查询Information Schema视图获得此信息,甚至更多。 此示例查询:

  • 问题内容: 我想知道如何从gridview获取列名?按其编号而不按名称。例如:姓名|年龄|生日:(所以姓名= 0,年龄= 1等) 谢谢。 问题答案: 您可以这样获得它: 或像这样: Rows [0]应该是您的标题行。

  • 我想实现一些类似于Spring数据的东西。 在spring初始化期间,我需要获得所有接口的列表(适当地注释)<为接口创建动态代理,并将它们注入到需要的地方。 代理创建,创建bean注入就可以了。现在问题来了: 如何找到所有接口的列表? 因此,我需要一个基本包的完整列表,通过Spring扫描在包中找到我的接口(必须快得多)。 在SpringContext中肯定可以获得这些信息。我试图调试并查看bas

  • 我想从excel表格中读取一组用户名和密码。我的用户名出现在第一列,但我的密码值出现在第8列。我不想通过给出第8列地址来读取第8列的值。相反,我想在excel工作表中的任何地方读取密码值。有什么办法可以做到这一点吗? FileInputStream fs=new FileInputStream(strReadFile); 工作簿wb=Workbook.getWorkbook fs; 工作簿sh=w

  • 问题内容: 我可以想到两种方式: 惯用的方式是什么?也许已经有一个库函数可以完全满足我的需求? 问题答案: 我猜这种方式(或至少是另一种方式)更有效: 由于该函数与完全兼容,因为它需要并返回。不执行自动装箱。 我也在寻找一个等价的,我希望写一个等价的您的方法: 但是他们没有提供这种方法。不知道为什么。