对于我正在进行的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,其中每一行都包含创建表所需的值(与类的值匹配(。我在一个名为empDF
的DataFrame中加载了我的CSV文件,该文件与以下内容匹配:
|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(必须不同,但可以是随机的。
如果你对我如何做到这一点有任何想法或线索,那将对我有很大帮助。
谢谢你的帮助。
我找到了一个解决方案来做我想做的事情:
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。