我是新来的scala,我有一个要求重构/模块化我的代码。斯卡拉案例类模块化
我的代码看起来像这样,
case class dim1(col1: String,col2: Int,col3)
val dim1 = sc.textFile("s3n://dim1").map { row =>
val parts = row.split("\t")
dim1(parts(0),parts(1).toInt,parts(2)) }
case class dim2(col1: String,col2: Int)
val dim1 = sc.textFile("s3n://dim1").map { row =>
val parts = row.split("\t")
dim2(parts(0),parts(1).toInt) }
case class dim3(col1: String,col2: Int,col3: String,col4: Int)
val dim1 = sc.textFile("s3n://dim1").map { row =>
val parts = row.split("\t")
dim3(parts(0),parts(1).toInt,parts(2),parts(3).toInt) }
case class dim4(col1: String,col2: String,col3: Int)
val dim1 = sc.textFile("s3n://dim1").map { row =>
val parts = row.split("\t")
dim4(parts(0),parts(1),parts(2).toInt) }
这是ETL SCALA变换在Apache星火运行的代码。
下面是我的步骤,
- 定义测试用例类的每一个层面。
- 从S3读取文件并将其映射到相应的案例类。如果需要,我还需要更改数据类型。
这些步骤是高度重复,我想编写一个函数,
readAndMap(datasetlocation: String,caseclassnametomap: String)
有了这个我的代码将成为,
readAndMap("s3n://dim1",dim1)
readAndMap("s3n://dim2",dim2)
readAndMap("s3n://dim3",dim3)
readAndMap("s3n://dim4",dim4)
一些例子/方向将高度赞赏
谢谢
类名应该在'CapitalizedCamelCase'中。 – 2014-08-28 09:33:50