第一:用scala写一个wordcount程序
package com.scala.wordcount
object wordcountApp {
def main(args: Array[String]): Unit = {
//造一个List,模拟读取文件
val wordlist= List("hello scala","hello word","scala word","apple banana","spark scala")
//第一种方法
val wc=wordlist.flatMap(_.split(" "))
.map((_,1))
.groupBy(_._1)
.mapValues(_.size)
.toList.sortBy(_._2).reverse
for(ele<-wc) println(ele)
//第二种方法 flatMap运行结果与map().flatten.toList结果一样
val wc1 = wordlist.map(_.split(" ")).flatten.toList
val wc2 = wordlist.flatMap(_.split(" "))
.map((_,1))
.groupBy(_._1)
.map(t=>(t._1,t._2.size))
.toList.sortBy(_._2)
.reverse
//println("***************************")
//for(ele<-wc1) println(ele)
println("***************************")
for(e<-wc2) println(e)
println("***************************")
//第三种方法val wc3 = wordlist.flatMap(_.split(" "))
.map((_,1))
.groupBy(_._1)
.mapValues(_.foldLeft(0)(_+_._2))
.toList.sortBy(_._2).reverse
for(e<-wc3) println(e) }}
第二:用scala结合scalikeJDBC操作MySQL数据库
**1.在idea中创建一个scala+maven的project**
2.引入相关包
***<!--引入scalikejdbc依赖-->
<dependency>
<groupId>org.scalikejdbc</groupId>
<artifactId>scalikejdbc_2.11</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.scalikejdbc</groupId>
<artifactId>scalikejdbc-core_2.11</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.scalikejdbc</groupId>
<artifactId>scalikejdbc-config_2.11</artifactId>
<version>3.3.1</version>
</dependency>
<!--引入mysql-connector-java依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>***
2.在resources文件夹里创建application.conf
MySQL example
db.default.driver="com.mysql.jdbc.Driver"
db.default.url="jdbc:mysql://localhost/scalikejdbc"
db.default.user="root"
db.default.password="*********"
3.参考官方的文档coding
package com.scala.jdbc
import scalikejdbc._
case class Employee(id:Int,name:String,age:Int,department:String,salary:Long)
object ScalikeJDBC {
def main(args: Array[String]): Unit = {
//解析应用程序的conf文件
scalikejdbc.config.DBs.setupAll()
//创建有三个Employee
val em = new Employee(1,"XiaoMIn",23,"DataCenter",12000)
val em1 = new Employee(2,"XiaoXiong",23,"DataCenter",42000)
val em2 = new Employee(3,"XiaoHua",23,"DataCenter",23000)
//将创建的Employee放入List
val employeeList:List[Employee]=List(em,em1,em2)
//增加数据
println("增加新数据")
println("增加新数据"+addDataAndbathchSave(employeeList))
var emp1 = selectData()
for(emp<-emp1) {
//println(emp)
println("id:"+emp.id+"\tname:"+emp.name+"\tage:"+emp.age+"\tdepartment:"+emp.department+"\tsalary:"+emp.salary)
if(emp.id ==emp1.size) return
}
}
//增加并保存数据
def addDataAndbathchSave(employees: List[Employee]): Unit = {
DB.localTx { implicit session =>
for (emp <- employees) {
SQL("insert into Employee(id,name,age,department,salary) values(?,?,?,?,?)")
.bind(emp.id, emp.name, emp.age, emp.department, emp.salary).update().apply()
}
}
}
//根据ID删除Data
def removeByID(id:Int): Unit ={
DB.autoCommit{ implicit session=>{
SQL("delete from Employee where is = ?").bind(id).update().apply()
}
}
}
//更新salary数据和部门数据通过id
def updateSalaryByID(id:Int,salary:Long): Unit ={
DB.autoCommit{ implicit session =>{
SQL("UPDATE Employee SET salary=? WHERE id = ? ").bind(id,salary).update().apply()
}
}
}
//查找数据
def selectData():List[Employee] = {
DB.readOnly{ implicit session=>{
SQL("SELECT * FROM Employee").map(results=>Employee(results.int("id"),
results.string("name"),results.int("age"),results.string("department"),
results.long("salary"))).list().apply()
}
}
}
}
本文介绍使用Scala实现WordCount程序的三种方法,并详细展示了如何结合scalikeJDBC进行MySQL数据库操作,包括数据增删改查等关键步骤。
2280

被折叠的 条评论
为什么被折叠?



