分享

如何顶周期向mysql写数据,并覆盖原来的表

Wyy_Ck 发表于 2017-6-19 23:09:57 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 11424


现在代码如下:
[mw_shl_code=scala,true]
import java.sql.{DriverManager, PreparedStatement, Connection}
import org.apache.spark.{SparkContext, SparkConf}
import org.dmg.pmml.False


object RDDtoMysql {
    case class Blog(name: String, count: Int)

  def myFun(iterator: Iterator[(String, Int)]): Unit = {
    var ps:PreparedStatement = null
    var conn: Connection = null
    val sql = "insert into blog(name, count) values (?, ?)"
    try {
      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root", "123456")
      iterator.foreach(data => {
        ps = conn.prepareStatement(sql)
        ps.setString(1, data._1)
        ps.setInt(2, data._2)
        ps.executeUpdate()
      }
      )
      }
    catch {
      case e: Exception => println("Mysql Exception")
    } finally {
      if (ps != null) {
        ps.close()
      }
      if (conn != null) {
        conn.close()
      }
    }
  }

  def main(args: Array[String]) {
    //设置运行模式和应该名称
    val conf = new SparkConf().setAppName("RDDToMysql").setMaster("local")
    val sc = new SparkContext(conf)
    val file=sc.textFile("hdfs://master:9000/weblog/access.log.10")
    val count=file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_).sortBy(_._2, false)
   
    val data = sc.parallelize(count.collect())
    data.foreachPartition(myFun)
  }
}[/mw_shl_code]


请问下 怎么修改为顶周期 并覆盖原来的表呢 谢谢哈

已有(5)人评论

跳转到指定楼层
easthome001 发表于 2017-6-20 07:00:17
定期,写个Linux shell定时脚本即可
覆盖插入的时候,可以使用override
下面的帖子,跟楼主有点类似
传统BI脚本示例
http://www.aboutyun.com/forum.php?mod=viewthread&tid=21958



回复

使用道具 举报

Wyy_Ck 发表于 2017-6-20 10:48:42
easthome001 发表于 2017-6-20 07:00
定期,写个Linux shell定时脚本即可
覆盖插入的时候,可以使用override
下面的帖子,跟楼主有点类似

我想着 能不能在Scala 代码里面实现
回复

使用道具 举报

nextuser 发表于 2017-6-20 17:51:12
Wyy_Ck 发表于 2017-6-20 10:48
我想着 能不能在Scala 代码里面实现

可以啊,其实hive sql应该在spark里面也可以嵌入。

回复

使用道具 举报

Wyy_Ck 发表于 2017-6-20 23:26:06
nextuser 发表于 2017-6-20 17:51
可以啊,其实hive sql应该在spark里面也可以嵌入。

有没有code 参考学习你呢
回复

使用道具 举报

ledasion 发表于 2017-7-17 10:09:31
可以用 Linux 的 crontab -e 做一个定时任务,进行调度
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条