我需要將具有字符串列的數據框連接到具有字符串數組的一個數據框,以便如果數組中的某個值匹配,則這些行將連接。Spark:加入數組
我試過這個,但我想這不是支持。 任何其他方式來做到這一點?
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("test")
val spark = SparkSession.builder().config(sparkConf).getOrCreate()
import spark.implicits._
val left = spark.sparkContext.parallelize(Seq(1, 2, 3)).toDF("col1")
val right = spark.sparkContext.parallelize(Seq((Array(1, 2), "Yes"),(Array(3),"No"))).toDF("col1", "col2")
left.join(right,"col1")
拋出:
org.apache.spark.sql.AnalysisException:無法解析 '(
col1
=col1
)' 由於數據 類型不匹配:在不同類型「(col1
=
col1
)'(int and array)。;;
謝謝!這與爆炸相比如何?性能明智嗎? – aclokay
嗯,我猜這個解決方案稍好一點,但我不確定,因爲UDF可能會很慢。但是,內存方面,這個解決方案肯定會比另一個佔用更少的空間。 –
我想我會更好地知道如果我會嘗試兩種方式。謝謝。 – aclokay