mysql广播_广播变量

从 mysql 读取数据作为广播变量时, 虽然有 checkpoint 但是 kill 掉任务后,重启程序会失败。

class GacXs6Offline @Inject()( sparkConf : SparkConfiguration,

mysqlConf : MysqlConfiguration,

hbaseConf : HbaseConfiguration,

sparkContext : EnterpriseSparkContext[SparkContext],

source : NationDStream[(String,NaSourceData)],

naDriveTrip : NaDriveTrip

) extends Serializable {

val naDriveTripDS = naDriveTrip.exteact(source)

saveNaDriveTrip("drive_trip", naDriveTrip)

}

// serializable error, because the use of hbaseConf

def saveNaDriveTrip(tableName: String, naDriveTrip: DStream[(String, TripState)]): Unit = {

naDriveTrip.foreachRDD(rdd => {

val conf = HBaseConfiguration.create()

val jobConf = new JobConf(conf)

jobConf.set("hbase.zookeeper.quorum", hbaseConf.hbaseUrl)

jobConf.set("zookeeper.znode.parent", "/hbase")

jobConf.set(TableOutputFormat.OUTPUT_TABLE, tableName)

jobConf.setOutputFormat(classOf[TableOutputFormat])

rdd.map(x => {

(new ImmutableBytesWritable, (new NaHbaseDao).putNaTripData(x._1, x._2))

}).saveAsHadoopDataset(jobConf)

})

}

// serializable ok, because we create a new hbaseConf

def saveNaDriveTrip(tableName: String, naDriveTrip: DStream[(String, TripState)]): Unit = {

naDriveTrip.foreachRDD(rdd => {

val conf = HBaseConfiguration.create()

val jobConf = new JobConf(conf)

val naHbaseConf = new HbaseConfiguration

jobConf.set("hbase.zookeeper.quorum", naHbaseConf.hbaseUrl)

jobConf.set("zookeeper.znode.parent", "/hbase")

jobConf.set(TableOutputFormat.OUTPUT_TABLE, tableName)

jobConf.setOutputFormat(classOf[TableOutputFormat])

rdd.map(x => {

(new ImmutableBytesWritable, (new NaHbaseDao).putNaTripData(x._1, x._2))

}).saveAsHadoopDataset(jobConf)

})

}

// serializable ok, because we create a new hbaseConf

def saveNaDriveTrip(tableName: String, naDriveTrip: DStream[(String, TripState)]): Unit = {

naDriveTrip.foreachRDD(rdd => {

rdd.foreachPartition(partitionRdd => {

val hbaseConf = new HbaseConfiguration

val hbase = new HbaseUtil(hbaseConf)

val connection = hbase.getHbaseConn

val table = connection.getTable(TableName.valueOf(tableName))

val list = partitionRdd.map(data => {

NaHbaseDao.putNaTripData(data._1, data._2)

}).toList

if (null != list && list.nonEmpty) {

NaHbaseDao.saveData(list, table)

}

})

})

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值