簡體   English   中英

如何使用Scala從XML文件傳入字符串作為Spark中dataFrames的連接條件?

[英]How can I pass in a string from XML file as a join condition for dataFrames in Spark Using Scala?

我想在某些列(稱為鍵)上加入數據框,並從XML文件中讀取這些列的名稱。

private def joinTables(xmlTable : Node) {
        var key:String = (xmlTable \ "@key").text;
        println(key)
        val df1= //logic;
        val df2 = //logic;
        val join_df = df1.join(df2, Seq(key), "outer")
}

這是println(key)的輸出

"col1", "col2"

我希望在輸入密鑰后,這兩個等價物看起來像這樣

val join_df = df1.join(df2, Seq("col1", "col2"), "outer") //If I hardcode and type it like this, the code runs fine
val join_df = df1.join(df2, Seq(key), "outer")

但是,運行后,出現以下錯誤

org.apache.spark.sql.AnalysisException: USING column `"col1", "col2"` cannot be resolved on the left side of the join. The left-side columns: [col1, col2, col3, col4];

密鑰的XML看起來像這樣

 <table name="table1" key="&quot;col1&quot;, &quot;col2&quot;, &quot;col3&quot;, &quot;col4&quot;">
</table>

即使我修改了上面的xml,我也遇到了同樣的錯誤,因此鍵只有一列

<table name="table1" key="&quot;col1&quot;">
    </table>

錯誤信息:

org.apache.spark.sql.AnalysisException:  USING column `"col1"` cannot be resolved on the left side of the join. The left-side columns: [col1, col2, col3, col4];

總結:如何從XML讀取字符串,並使用Scala將其用於聯接兩個數據框? 我的方法不正確嗎?

從XML文件獲取並存儲在key是一個字符串。

var key:String = (xmlTable \ "@key").text;

那不是一個字符串列表,而是一個字符串。 要創建一系列列,您需要使用split和各種strip功能。

val cols = key.split(", ").map(_.stripPrefix("\"").stripSuffix("\""))

以下先前的問題涵蓋了這些內容。

在Scala中整理字符串

如何在Scala中將字符串除以字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM