我是新來的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