[英]how can i get a matching string from a xml file using <getxmlproperties> tag using ant and replace the matched string in other xml file
[英]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=""col1", "col2", "col3", "col4"">
</table>
即使我修改了上面的xml,我也遇到了同樣的錯誤,因此鍵只有一列
<table name="table1" key=""col1"">
</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("\""))
以下先前的問題涵蓋了這些內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.