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

将列值列表作为新列传递给spark dataframe

狄楷
2023-03-14

我正试图添加一个新列到spark dataframe中,如下所示:

val abc = [a,b,c,d]   ---  List of columns

我试图将上面的列值列表作为新列传递给dataframe,并尝试对该新列执行sha2,并尝试执行varchar(64)。

source = source.withColumn("newcolumn", sha2(col(abc), 256).cast('varchar(64)'))
Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve 'abc' given input 
columns:

共有1个答案

田丰
2023-03-14

我们可以使用mapconcat_ws创建新列,并对concat数据应用sha2()。

val abc = Seq("a","b","c","d")
val df=Seq(((1),(2),(3),(4))).toDF("a","b","c","d")
df.withColumn("newColumn",sha2(concat_ws("||",  abc.map(c=> col(c)):_*),256)).show(false)
//+---+---+---+---+----------------------------------------------------------------+
//|a  |b  |c  |d  |newColumn                                                       |
//+---+---+---+---+----------------------------------------------------------------+
//|1  |2  |3  |4  |20a5b7415fb63243c5dbacc9b30375de49636051bda91859e392d3c6785557c9|
//+---+---+---+---+----------------------------------------------------------------+
 类似资料:
  • 问题内容: 我想按值将列表传递给函数。默认情况下,列表和其他复杂对象通过引用传递给函数。这是一些目标: 可以写得短些吗?换句话说,我不想更改 ad 。 问题答案: 您可以使用,但是对于包含列表(或其他可变对象)的列表,您应该使用: 等价于或,并返回列表的浅表副本。 何时使用:

  • 问题内容: 大家好,我在使用某些代码时遇到了麻烦。我正在实施包裹。基本上我有一个全局启动的项目列表 我希望将其作为一个可传递的实例传递,以在旋转时保存实例状态。我实现了saveOnInstanceState方法和onCreate 唯一的问题是它将引发错误,并且错误指向outstate.putParcelableArrayList行。 有人知道解决方法或解决方法吗?我尝试使用Google搜索,并查看

  • 我需要用不同对象的列表填充几个子报表。基本上,假设我有以下内容:< br >二手车子报表< br >新车子报表< br > 我用字符串形式的变量创建了一个vehicle bean类,并为其创建了getter和setter方法。然后在我的数据源中,我传入一个< code >列表 我在主报表中创建了一个字段详细信息行作为类型列表。然后,我将以下内容传递给子报表数据源表达式,new 有什么方法可以将 从

  • 问题内容: 我正在尝试从SQL导出到.csv,如果我对其进行硬编码以接受一定数量的参数,则它可以正常工作。问题是,我想允许用户请求任意数量的参数,并将它们传递给where子句。该代码应该使这一点更加清楚。 所以我想我要做的是将列表传递给where子句,而不是显式的:dates#变量。例如,一个人可以使用参数“ 2012-01-0412:00、2012-02-04 12:00、2012-03-04

  • 有没有比传递分隔字符串并稍后解析它更优雅的方法来传递可选的整数列表到?我也有一个位置论点。 不工作,因为试图获取并抱怨它不是整数。 理想情况下,我想与其中一个执行 或者类似的东西,但也能

  • 我有一个REST服务,它接收许多查询参数,其中包括字符串列表。我使用RestAssured来测试这个REST服务,但是我在将列表传递给服务时遇到了一些问题。 我的Rest服务: