温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Pulsar IO 中怎么调用Schema

发布时间:2021-06-24 15:57:57 阅读:198 作者:Leah 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章给大家介绍Pulsar IO 中怎么调用Schema ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Schema 是一种描述数据的数据   。例如,数据库中表的信息和字段类型等都是 Schema。Pulsar 对 Schema 也有比较好的支持。    


>>> Schema 简单应用 <<<  

 
在使用 pub/sub 生产和消费消息时,可以通过以下代码使用 Schema:  
     
   
   
   public class SensorReading {  
    
        public float temperature;  
    
      
    
        public SensorReading(float temperature) {  
    
            this.temperature = temperature;  
    
        }  
    
      
    
        // A no-arg constructor is required  
    
        public SensorReading() {  
    
        }  
    
      
    
        public float getTemperature() {  
    
            return temperature;  
    
        }  
    
      
    
        public void setTemperature(float temperature) {  
    
            this.temperature = temperature;  
    
        }  
    
    }  
    
    Producer<SensorReading> producer = client.newProducer(JSONSchema.of(SensorReading.class))  
    
        .topic("my-topic")  
    
        .create();  
    
    Consumer consumer = client.newConsumer(JSONSchema.of(SensorReading.class))  
    
            .topic("my-topic")  
    
            .subscriptionName("my-subscription")  
    
            .subscribe(); 
   
   
  
通过以上操作,生产者和消费者可以识别出关于 SensorReading 这个类的含义。这是 Schema 在客户端的应用,也是比较普遍的使用方法。  

 
前文已经提到,Source 和 Sink 是对 pub/sub 的封装,因此,Schema 的应用也是基于以上原理。以下为详细说明。  

 
>>> Source 中的 Schema <<<  

 
在内建的 Sink 中,实现了一个 Consumer,用于接收从 Pulsar 发来的数据。  
     
   
   
   if (conf.getSerdeClassName() != null && !conf.getSerdeClassName().isEmpty()) {  
    
        schema = (Schema<T>) topicSchema.getSchema(topic, typeArg, conf.getSerdeClassName(), true);  
    
    } else {  
    
        schema = (Schema<T>) topicSchema.getSchema(topic, typeArg, conf.getSchemaType(), true);  
    
    }
getSerdeClassName    会获取用户指定的用于序列化与反序列化的类,通过指定 --   custom-serde-inputs    参数,从而构建真正的 Schema。  
     
   
   
   case NONE:  
    
      return (Schema<T>) Schema.BYTES;  
    
      
    
    case AUTO_CONSUME:  
    
    case AUTO:  
    
      return (Schema<T>) Schema.AUTO_CONSUME();  
    
      
    
    case STRING:  
    
      return (Schema<T>) Schema.STRING;  
    
      
    
    case AVRO:  
    
      return AvroSchema.of(SchemaDefinition.<T>builder().withPojo(clazz).build());  
    
      
    
    case JSON:  
    
      return JSONSchema.of(SchemaDefinition.<T>builder().withPojo(clazz).build());  
    
      
    
    case KEY_VALUE:  
    
      return (Schema<T>)Schema.KV_BYTES();  
    
      
    
    case PROTOBUF:  
    
      return ProtobufSchema.ofGenericClass(clazz, Collections.emptyMap());  
    
    } 
   
   
  


关于Pulsar IO 中怎么调用Schema 就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/apachepulsar/blog/4466657

AI

开发者交流群×