Hi, How about this? -- val func = udf((i: Int) => Tuple2(i, i)) val df = Seq((1, 0), (2, 5)).toDF("a", "b") df.select(func($"a").as("r")).select($"r._1", $"r._2")
// maropu On Thu, May 26, 2016 at 5:11 AM, Koert Kuipers <ko...@tresata.com> wrote: > hello all, > > i have a single udf that creates 2 outputs (so a tuple 2). i would like to > add these 2 columns to my dataframe. > > my current solution is along these lines: > df > .withColumn("_temp_", udf(inputColumns)) > .withColumn("x", col("_temp_)("_1")) > .withColumn("y", col("_temp_")("_2")) > .drop("_temp_") > > this works, but its not pretty with the temporary field stuff. > > i also tried this: > val tmp = udf(inputColumns) > df > .withColumn("x", tmp("_1")) > .withColumn("y", tmp("_2")) > > this also works, but unfortunately the udf is evaluated twice > > is there a better way to do this? > > thanks! koert > -- --- Takeshi Yamamuro