對于我正在從事的 Scala 專案,我必須創建一個類Table,如下所示:
class Table(PbddName : String , PTableName: String, POutputFilename: String="", PFilteringFlag: Boolean=true) {
var bddName : String = PbddName
var TableName: String = PTableName
var OutputFilename: String = POutputFilename
var FilteringFlag: Boolean =PFilteringFlag
}
要創建表,我在以下代碼中使用此代碼Scala object:
val randomName = new Table(bddName, blablaTableName, blablaOutputFilename,blablaFilteringFlag)
list_tables =randomName
我還將它添加到list_Tables顯然列出所有表的串列中。
但是因為我有很多“表格”要創建,所以我制作了一個 csv,其中每一行都包含創建表格所需的值(匹配類的值)。我將我的 CSV 檔案加載到與此匹配的 DataFrameempDF中:
|bdd_name| table_name| file_name|filtering_flag|
-------- -------------- -------------- --------------
| bdd1|name1tablename| name1Filename| true|
| bdd2|name2tablename| name2Filename| true|
| bdd3|name3tablename| name3Filename| false|
| bdd4|name4tablename| name4Filename| true|
-------- -------------- -------------- --------------
我想知道如何自動創建我的“表格”元素?(并將創建的表格添加到我的list_Tables)。我不確定,但我想我可能必須以某種方式瀏覽我的資料框才能在每行讀取的元素上創建元素。
此外,每個val名稱(此處為 randomName)必須不同,但可以是隨機的。
如果您有任何想法或任何關于我如何做到這一點的線索,那將對我有很大幫助。
謝謝你的幫助。
uj5u.com熱心網友回復:
我找到了一個解決方案來做我想做的事:
for (row <- empDF.rdd.collect) {
var bddname = row.mkString(",").split(",")(0)
var tablename = row.mkString(",").split(",")(1)
var Outputfilename = row.mkString(",").split(",")(2)
var filteringflag = row.mkString(",").split(",")(3)
val nomtable =new Table(bddname, tablename, Outpufilename, filteringflag, tablename)
list_tables =nomtable
}
我實際上不需要所有表的不同名稱,所以這個解決方案在這一點上對我有用。唯一的問題是,我無法為兩者處理相同的方法String,Boolean因此我不得不將所有元素從我的Table類更改為 String。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/440184.html
標籤:数据框 斯卡拉 阿帕奇火花 apache-spark-sql
下一篇:正確不使用理解Scala
