Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在squence-scala中连接两个数组列_Scala_Apache Spark_Databricks - Fatal编程技术网

在squence-scala中连接两个数组列

在squence-scala中连接两个数组列,scala,apache-spark,databricks,Scala,Apache Spark,Databricks,我有一个带有两个数组列的数据帧,试图通过顺序连接a和B来创建一个新列 val df = Seq((Seq("a","b","c"),Seq("d","5","6"))).toDF("A","B") 预期产出: C:[“a d”、“b 5”、“C 6”] 我正在探索这两个数组,并使用“import org.apache.spark.sql.functions.array”函数再次加入它,但它没有给出预期的结果。我认为spark没有现成的函数。您可以在此处使用用户定义的函数zip,例如: impo

我有一个带有两个数组列的数据帧,试图通过顺序连接a和B来创建一个新列

val df = Seq((Seq("a","b","c"),Seq("d","5","6"))).toDF("A","B")
预期产出:

C:[“a d”、“b 5”、“C 6”]


我正在探索这两个数组,并使用“import org.apache.spark.sql.functions.array”函数再次加入它,但它没有给出预期的结果。

我认为spark没有现成的函数。您可以在此处使用用户定义的函数
zip
,例如:

import spark.implicits._
def zipFunc: (Seq[String], Seq[String]) => Seq[String] = (x: Seq[String], y: Seq[String]) => 
  x.zip(y).map{ case (xi, yi) => s"$xi $yi"}

val df = Seq(
  (Seq("a","b","c"), Seq("d","5","6"))
).toDF("A","B")
df.printSchema()
val zipUDF = spark.udf.register("zipUdf", zipFunc)
df.withColumn("C", zipUDF($"A", $"B")).show()
印刷品:

+---------+---------+---------------+
|        A|        B|              C|
+---------+---------+---------------+
|[a, b, c]|[d, 5, 6]|[a d, b 5, c 6]|
+---------+---------+---------------+

我认为Spark没有现成的功能。您可以在此处使用用户定义的函数
zip
,例如:

import spark.implicits._
def zipFunc: (Seq[String], Seq[String]) => Seq[String] = (x: Seq[String], y: Seq[String]) => 
  x.zip(y).map{ case (xi, yi) => s"$xi $yi"}

val df = Seq(
  (Seq("a","b","c"), Seq("d","5","6"))
).toDF("A","B")
df.printSchema()
val zipUDF = spark.udf.register("zipUdf", zipFunc)
df.withColumn("C", zipUDF($"A", $"B")).show()
印刷品:

+---------+---------+---------------+
|        A|        B|              C|
+---------+---------+---------------+
|[a, b, c]|[d, 5, 6]|[a d, b 5, c 6]|
+---------+---------+---------------+

使用arrays_zip函数获得预期结果,如下所示:

import org.apache.spark.sql.functions.arrays_zip
val output = df.withColumn(
 "zipped", arrays_zip($"A", $"B")
)

使用arrays_zip函数获得预期结果,如下所示:

import org.apache.spark.sql.functions.arrays_zip
val output = df.withColumn(
 "zipped", arrays_zip($"A", $"B")
)

它在示例中工作得很好,但是当我替换表的列时,我得到了一个不可序列化的任务error@VSr我更新了答案,但您的决定更好。它在示例中运行良好,但当我替换表中的列时,我得到的任务不可序列化error@VSr我更新了答案,但你的决定更好。