2014-04-09 7 views
12

से एवरो स्कीमा जेनरेट करें अपाचे एवरो एक कॉम्पैक्ट, तेज़, बाइनरी डेटा प्रारूप, सीरियलाइजेशन के लिए समृद्ध डेटा संरचना प्रदान करता है। हालांकि, उपयोगकर्ता को ऑब्जेक्ट के लिए स्कीमा (JSON में) को परिभाषित करने की आवश्यकता होती है जिसे क्रमबद्ध करने की आवश्यकता होती है।कुछ जावा ऑब्जेक्ट

कुछ मामलों में, यह संभव नहीं हो सकता है (उदाहरण: उस जावा ऑब्जेक्ट की कक्षा में कुछ सदस्य हैं जिनके प्रकार बाहरी पुस्तकालयों में बाहरी जावा कक्षाएं हैं)। इसलिए, मुझे आश्चर्य है कि एक उपकरण ऑब्जेक्ट की .class फ़ाइल से जानकारी प्राप्त कर सकता है और उस ऑब्जेक्ट के लिए एवरो स्कीमा उत्पन्न कर सकता है (जैसे Gson का उपयोग ऑब्जेक्ट की .class जानकारी को कुछ ऑब्जेक्ट को JSON स्ट्रिंग में परिवर्तित करने के लिए)।

+0

दिलचस्प सवाल है। एक उपकरण मौजूद है जो जावा क्लास (JSschema2pojo) से जेएसओएन स्कीमा जेनरेट कर सकता है और मेरे पास एक ऐसा टूल है जो जेएसओएन स्कीमा (जेसन-स्कीमा-एवरो) से एवरो स्कीमा उत्पन्न कर सकता है। हालांकि, पूर्व उपकरण केवल जेएसओएन स्कीमा वी 3 उत्पन्न कर सकता है, और मेरा उपकरण जेएसओएन स्कीमा वी 4 इनपुट के रूप में है ... – fge

+0

आपके उत्तर के लिए धन्यवाद, क्या आपका मतलब है कि आपने एक उपकरण लिखा है जो एएसरो स्कीमा को JSON स्कीमा से परिवर्तित कर सकता है? –

+1

हां, मेरा मतलब है कि: https://github.com/fge/json-schema-avro – fge

उत्तर

0

यहाँ कैसे करने के लिए Generate an Avro Schema from POJO definition

ObjectMapper mapper = new ObjectMapper(new AvroFactory()); 
AvroSchemaGenerator gen = new AvroSchemaGenerator(); 
mapper.acceptJsonFormatVisitor(RootType.class, gen); 
AvroSchema schemaWrapper = gen.getGeneratedSchema(); 
org.apache.avro.Schema avroSchema = schemaWrapper.getAvroSchema(); 
String asJson = avroSchema.toString(true); 
संबंधित मुद्दे