IT评测·应用市场-qidao123.com技术社区

标题: SnapshotScanMR速率比TableScanMR快10~30倍,那Spark如何实现SnapshotScanM [打印本页]

作者: 来自云龙湖轮廓分明的月亮    时间: 2024-10-19 13:15
标题: SnapshotScanMR速率比TableScanMR快10~30倍,那Spark如何实现SnapshotScanM
HBase 提供的 TableScanMR 和 SnapshotScanMR 是两种用于在大数据集中举行扫描的 MapReduce 作业,网上也有很多介绍Spark如何实现TableScanMR,但是对SnapshotScanMR的实现方式很少几乎没找到可用的,接下来我们先说说这两者的一些共同点以及不同的实现原理,再介绍Spark是如何实现的。
雷同点

不同点

  1.    val sc = new SparkContext(sparkConf)
  2.    val scan = new Scan();
  3.    scan.addFamily(Bytes.toBytes("c"))
  4.    scan.setTimeStamp(timeStamp)
  5.    scan.withStartRow(Bytes.toBytes(startRow))
  6.    scan.withStopRow(Bytes.toBytes(stopRow))
  7.    
  8.    val hbaseConf = new Configuration()
  9.    hbaseConf.set(TableInputFormat.SCAN, Base64.encodeBytes(ProtobufUtil.toScan(scan).toByteArray))
  10.    hbaseConf.set(TableInputFormat.INPUT_TABLE, "Hbase的表名")
  11.    val dataRDD: RDD[(ImmutableBytesWritable, Result)] = sc.newAPIHadoopRDD(hbaseConf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])
  12.   //  处理后续逻辑
复制代码

  1.   //1.定义扫描范围
  2.    val sc = new SparkContext(sparkConf)
  3.    val scan = new Scan();
  4.    scan.addFamily(Bytes.toBytes("c"))
  5.    scan.setTimeStamp(timeStamp)
  6.    scan.withStartRow(Bytes.toBytes(startRow))
  7.    scan.withStopRow(Bytes.toBytes(stopRow))
  8.   //2.创建快照
  9.    val table = TableName.valueOf("Hbase的表名")
  10.    val snapshotName = "快照名称"
  11.    val tmpRestoreDir = new Path("临时目录")
  12.    //创建快照(可以参考Hbase创建快照)
  13.    Admin.snapshot(snapshotName, table);
  14.   //3.创建SnapshotScan并返回一个RDD
  15.    val job: Job = Job.getInstance()
  16.    TableMapReduceUtil.initCredentials(job)
  17.    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,classOf[IdentityTableMapper], null, null, job, true, tmpRestoreDir)
  18.   //最后一个参数是HBaseContext 可以根据具体的实现传入
  19.   val dataRDD: RDD[(ImmutableBytesWritable, Result)] = new NewHBaseRDD(sc,classOf[TableSnapshotInputFormat],classOf[ImmutableBytesWritable],classOf[Result], job.getConfiguration,HBaseContext)
  20.   //  处理后续逻辑
  21. //4.删除快照和目录
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4