我正在尝试在案例类类型列表中选择特定属性。让我解释一下
这是我的test.txt文件:
india|M|IND|P|15951124869|15
usa|F|usa|R|15951178869|25
australia|M|aus|S|15951189869|35
kenya|M|KN|F|15956624869|55
russia|M|rus|u|15981124869|75
china|T|ch|L|15951128869|95
england|F|eng|Z|15959124869|65
germany|F|ger|I|15987124869|25
finland|M|fin|H|15967124869|45
singapore|F|sing|I|15956124869|65
案例类:
case class Deshi(country: String, gender: String, countryCode: String, statusJi: String, gadiNumber: String, age: String)
defined class Deshi
阅读test.txt文件:
scala> val deshiLines=readFileC("/Users/neha.gambhir/Desktop/test.txt")
deshiLines: List[String] = List(india|M|IND|P|15951124869|15, usa|F|usa|R|15951178869|25, australia|M|aus|S|15951189869|35, kenya|M|KN|F|15956624869|55, russia|M|rus|u|15981124869|75, china|T|ch|L|15951128869|95, england|F|eng|Z|15959124869|65, germany|F|ger|I|15987124869|25, finland|M|fin|H|15967124869|45, singapore|F|sing|I|15956124869|65)
这是我的案例类类型列表:
scala> val nayaDeshiList=deshiLines.map{ raw_line =>
| val columns = raw_line.split("\\|")
| Deshi(columns(0), columns(1), columns(2), columns(3), columns(4), columns(5))
| }
nayaDeshiList: List[Deshi] = List(Deshi(india,M,IND,P,15951124869,15), Deshi(usa,F,usa,R,15951178869,25), Deshi(australia,M,aus,S,15951189869,35), Deshi(kenya,M,KN,F,15956624869,55), Deshi(russia,M,rus,u,15981124869,75), Deshi(china,T,ch,L,15951128869,95), Deshi(england,F,eng,Z,15959124869,65), Deshi(germany,F,ger,I,15987124869,25), Deshi(finland,M,fin,H,15967124869,45), Deshi(singapore,F,sing,I,15956124869,65))
我只想从上面country, gender, age
中选择nayaDeshiList
。由于此nayaDeshiList
类型属于案例类Deshi
,因此我执行nayaDeshiList.type
,nayaDeshiList.country
这对我不起作用。有人可以建议我一个更好的方法吗?
注意:我只对使用纯Scala方法解决这个问题感兴趣,而不是像Spark这样的任何计算引擎
输出:输出应保留类类型。例如,它应该仍然具有相同的类型,例如nayaDeshiList: List[Deshi]
。唯一的区别是它应该只包含上面提到的特定列。感谢
答案 0 :(得分:1)
这是你的意思吗?
nayaDeshiList.map(x => (x.country, x.gender, x.age))
结果是List((String,String,String))
。您没有说明您希望如何组织数据元素。我把它们放在一个元组中,但还有其他选择。