【问题标题】:Apache Spark. UDF Column based on another column without passing it's name as argument.阿帕奇火花。 UDF 列基于另一列而不将其名称作为参数传递。
【发布时间】:2017-02-17 17:22:53
【问题描述】:

有带有公司列的数据集,我正在向该数据集添加另一列 - 公司 ID 这里是示例:

private val firms: mutable.Map[String, Integer] = ...
private val firmIdFromCode: (String => Integer) = (code: String) => firms(code)
val firm_id_by_code: UserDefinedFunction = udf(firmIdFromCode)
...
val ds = dataset.withColumn("firm_id", firm_id_by_code($"firm"))

有没有办法消除将$"firm" 作为参数传递(DS 中始终存在此列)。 我正在为此寻找一些东西:

val ds = dataset.withColumn("firm_id", firm_id_by_code)

【问题讨论】:

    标签: scala apache-spark spark-dataframe udf


    【解决方案1】:

    您可以在定义 udf 时提供它将使用的列。

    val someUdf = udf{ /*udf code*/}.apply($"colName")
    
    // Usage in dataset
    val ds = dataset.withColumn("newColName",someUdf)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-09
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多