返回顶部
首页 > 资讯 > 精选 >如何将数据按指定格式存入zookeeper
  • 556
分享到

如何将数据按指定格式存入zookeeper

2023-06-02 21:06:39 556人浏览 独家记忆
摘要

这篇文章主要讲解了“如何将数据按指定格式存入ZooKeeper”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何将数据按指定格式存入zookeeper”吧!环境:  Scala版本

这篇文章主要讲解了“如何将数据按指定格式存入ZooKeeper”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何将数据按指定格式存入zookeeper”吧!

环境:

  Scala版本:2.11.8

  zookeeper版本:3.4.5-cdh6.7.0

package com.ruozedata.zkimport java.util.concurrent.TimeUnitimport org.apache.curator.framework.CuratorFrameworkFactoryimport org.apache.curator.framework.recipes.locks.InterProceSSMuteximport org.apache.curator.retry.ExponentialBackoffRetryimport org.slf4j.LoggerFactoryimport scala.collection.JavaConversions._import scala.collection.mutableobject ZkConnectApp{  val LOG = LoggerFactory.getLogger(ZkConnectApp.getClass)  val client = {    val client = CuratorFrameworkFactory      .builder      .connectString("172.16.100.31:2181")      .retryPolicy(new ExponentialBackoffRetry(1000, 3))      .namespace("consumers")      .build()    client.start()    client  }  def lock(path: String)(body: => Unit) {    val lock = new InterProcessMutex(client, path)    lock.acquire()    try {      body    } finally {      lock.release()    }  }  def tryDo(path: String)(body: => Unit): Boolean = {    val lock = new InterProcessMutex(client, path)    if (!lock.acquire(10, TimeUnit.SECONDS)) {      LOG.info(s"不能获得 {$path},已经有任务在运行,本次任务退出")      return false    }    try {      LOG.info("获准运行")      body      true    } finally {      lock.release()      LOG.info(s"释放锁 {$path}")    }  }  //zookeeper创建路径  def ensurePathExists(path: String): Unit = {    if (client.checkExists().forPath(path) == null) {      client.create().creatingParentsIfNeeded().forPath(path)    }  }    case class OffsetRange(                          val topic:String,     // 主题                          val partition:Int,    // 分区                          val fromOffset:Long,  // 起始偏移量                          val utilOffset:Long   // 终止偏移量                        )    def storeOffsets(OffsetsRanges:Array[OffsetRange],groupName:String)={    val offsetRootPath = s"/"+groupName    if (client.checkExists().forPath(offsetRootPath) == null) {      client.create().creatingParentsIfNeeded().forPath(offsetRootPath)    }    for(els <- OffsetsRanges ){      val data = String.valueOf(els.utilOffset).getBytes      val path = s"$offsetRootPath/offsets/${els.topic}/partition/${els.partition}"      // 创建路径      ensurePathExists(path)      // 写入数据      client.setData().forPath(path, data)    }  }    case class TopicAndPartition(                                topic:String,  // 主题                                partition:Int  // 分区                              )    def obtainOffsets(topic:String,groupName:String):Map[TopicAndPartition,Long]={    // 定义一个空的HashMap    val maps = mutable.HashMap[TopicAndPartition,Long]()    // offset的路径    val offsetRootPath = s"/"+groupName+"/offsets/"+topic+"/partition"    // 判断路径是否存在    val stat = client.checkExists().forPath(s"$offsetRootPath")    if (stat == null ){      println(stat)  // 路径不存在 就将路径打印在控制台,检查路径    }else{      // 获取 offsetRootPath路径下一级的所有子目录      // 我们这里是获取的所有分区      val children = client.getChildren.forPath(s"$offsetRootPath")     // 遍历所有的分区      for ( lines <- children ){        // 获取分区的数据        val data = new String(client.getData().forPath(s"$offsetRootPath/"+lines)).toLong        // 将 topic  partition  和数据赋值给 maps        maps(TopicAndPartition(topic,lines.toInt)) = data      }    }    // 按partition排序后 返回map对象    maps.toList.sortBy(_._1.partition).toMap  }  def main(args: Array[String]) {      //定义初始化数据      val off1 = OffsetRange("ruoze_offset_topic",0,0,7)      val off2 = OffsetRange("ruoze_offset_topic",1,0,3)      val off3 = OffsetRange("ruoze_offset_topic",2,0,5)      val arr = Array(off1,off2,off3)      //获取到namespace//      println(client.getNamespace)      // 创建路径//      val offsetRootPath = "/G322"//      if (client.checkExists().forPath(offsetRootPath) == null) {//        client.create().creatingParentsIfNeeded().forPath(offsetRootPath)//      }      //存储值      storeOffsets(arr,"G322")      //获取值            val result = obtainOffsets("ruoze_offset_topic","G322")      for (map <- result){        println("topic:"+map._1.topic+"\t" +"partition:"+map._1.partition+"\t"+"offset:"+map._2)      }  }}

感谢各位的阅读,以上就是“如何将数据按指定格式存入zookeeper”的内容了,经过本文的学习后,相信大家对如何将数据按指定格式存入zookeeper这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何将数据按指定格式存入zookeeper

本文链接: https://lsjlt.com/news/231467.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何将数据按指定格式存入zookeeper
    这篇文章主要讲解了“如何将数据按指定格式存入zookeeper”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何将数据按指定格式存入zookeeper”吧!环境:  scala版本...
    99+
    2023-06-02
  • 如何用Scala将指定格式的数据写入到文件
    本篇内容主要讲解“如何用Scala将指定格式的数据写入到文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Scala将指定格式的数据写入到文件”吧!新建FileOps对象:package ...
    99+
    2023-06-02
  • 如何使用PHP读取Excel数据并将其转为指定格式
    这篇“如何使用PHP读取Excel数据并将其转为指定格式”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用PHP读取Ex...
    99+
    2023-07-05
  • PHP如何根据指定格式解析输入的字符
    这篇文章将为大家详细讲解有关PHP如何根据指定格式解析输入的字符,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 解析输入字符的格式化 PHP 提供了多种内置函数和类来解析不同格式的输入字符。根据您指...
    99+
    2024-04-02
  • 如何将数据写入redis缓存
    要将数据写入 redis 缓存,需要连接到服务器,使用 set 命令设置键值对,并可存储复杂结构。支持设置过期时间,并提供 nx 和 xx 选项处理冲突。同时,也可使用 mset 命令批...
    99+
    2024-04-20
    redis 数据丢失 键值对
  • vue中如何将日期转换为指定的格式
    目录vue将日期转换为指定的格式方案一方案二vue时间格式总结及转换获取当前时间时间格式之间的转换vue将日期转换为指定的格式 方案一 这个方法是我觉得特别好用的: 写一个转换日期的...
    99+
    2024-04-02
  • 怎么PHP读取Excel数据并将其转为指定格式
    在Web应用程序开发中,Excel文件是一种非常广泛和常见的数据源格式。但是,Excel文件中的数据格式可能与我们的目标应用程序不兼容。因此,我们需要一个方法将Excel数据转换为我们需要的数据格式。本文将介绍如何在PHP中导入Excel文...
    99+
    2023-05-14
    php Excel
  • php如何将数据转为excel格式
    这篇文章主要介绍“php如何将数据转为excel格式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何将数据转为excel格式”文章能帮助大家解决问题。什么是Excel格式Excel格式是一种...
    99+
    2023-07-05
  • PyTorch 如何将CIFAR100数据按类标归类保存
    few-shot learning的采样 Few-shot learning 基于任务对模型进行训练,在N-way-K-shot中,一个任务中的meta-training中含有N类,...
    99+
    2024-04-02
  • python如何生成EXCEL、连接数据库、并将指定数据写入EXCEL
    小编给大家分享一下python如何生成EXCEL、连接数据库、并将指定数据写入EXCEL,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!#!/usr/bin/p...
    99+
    2024-04-02
  • php如何将数据转化为json格式
    本篇内容介绍了“php如何将数据转化为json格式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在php中,可以使用json_encode(...
    99+
    2023-06-30
  • golang中如何将数据转为json格式
    本文小编为大家详细介绍“golang中如何将数据转为json格式”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang中如何将数据转为json格式”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。使用 Gola...
    99+
    2023-07-05
  • VB中如何将一个数据存入数组
    在VB中,可以使用数组来存储数据。以下是一种常见的将数据存入数组的方法:1. 声明一个数组变量。可以使用`Dim`语句声明一个数组变...
    99+
    2023-09-13
    VB
  • Prometheus数据存储如何指定类型
    在Prometheus中,数据存储的类型由Metric的名称和标签来指定。每个Metric都有一个名称和一组标签,用来唯一标识该Me...
    99+
    2024-03-14
    prometheus
  • 将excel中数据导入到指定的数据库表中
    1、先在数据库中查看表的结构:2、根据表的结构整理excel表结构及数据:3、右击数据库-任务-导入数据:4、选择源数据:5、选择目标:6、选择复制数据模式:7、选择目标数据表:8、点击下一步,然后执行。 ...
    99+
    2024-04-02
  • oracle数据泵如何导入指定表
    要导入指定表,你可以使用Oracle数据泵工具的impdp命令。以下是一个示例: impdp username/password@d...
    99+
    2024-04-15
    oracle
  • Java 如何将表格数据导入word文档中
    Java 表格数据导入word文档中 个人觉得这个功能实在搞笑,没什么意义,没办法提了需求就要实现,(太好说话了把我) 我的实现是再word中生成一个与 excel行,列 一样的一个...
    99+
    2024-04-02
  • Mysql如何将字符串按照指定字符分割
    这篇文章主要介绍“Mysql如何将字符串按照指定字符分割”,在日常操作中,相信很多人在Mysql如何将字符串按照指定字符分割问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql如何将字符串按照指定字符分割...
    99+
    2023-06-30
  • chatgpt赋能python:Python如何将数据存入Excel中?
    Python如何将数据存入Excel中? Python作为一门高级编程语言,广泛应用于数据处理和分析。在数据分析过程中,Excel作为常用的电子表格软件扮演着重要的角色。如果能将Python处理后的数...
    99+
    2023-09-10
    python chatgpt excel 计算机
  • JS如何将元素插入数组的指定索引
    这篇文章主要讲解了“JS如何将元素插入数组的指定索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS如何将元素插入数组的指定索引”吧!简介数组是一种线性数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作