2013-03-25 5 views
15

स्कैला में एवरो के साथ काम करने की सुविधा के लिए, मैं एक .avro फ़ाइल के साथ संग्रहीत स्कीमा के आधार पर केस क्लास को परिभाषित करना चाहता हूं। मैं कोशिश कर सकता था:क्या मुझे एवरो स्कीमा परिभाषा से स्कैला केस क्लास परिभाषा मिल सकती है?

  1. हाथ से एक .scala केस वर्ग परिभाषा लिखना।
  2. प्रोग्राम एक .scala फ़ाइल
  3. Spoof ObjectWeb के एएसएम
  4. SpecificCompiler चाल की तरह एक बाईटकोड पुस्तकालय के साथ मामला वर्ग परिभाषा के तार लेखन?
  5. रनटाइम पर मौजूदा केस वर्गीकृत परिभाषा को संशोधित करना?

धन्यवाद, किसी भी सलाह की सराहना की जाती है। -Julian

उत्तर

14

मैं (एवरो स्कीमा को स्काला प्रकार) अन्य रास्ते जाने के लिए एक छोटे से Scalavro बुलाया परियोजना पर हैकिंग कर रहा हूँ। यह आपको सीधे बाइनरी I/O भी देता है।

सरल उदाहरण:

package com.gensler.scalavro.tests 
import com.gensler.scalavro.types.AvroType 

case class Person(name: String, age: Int) 

val personAvroType = AvroType[Person] 
personAvroType.schema 

जो पैदावार:

{ 
    "name": "Person", 
    "type": "record", 
    "fields": [ 
    {"name": "name", "type": "string"}, 
    {"name": "age", "type": "int"} 
    ], 
    "namespace": "com.gensler.scalavro.tests" 
} 

परियोजना स्थल (ऊपर लिंक) पर और scalatest चश्मा में कई और अधिक उदाहरण हैं।

मेरे पास निकट भविष्य में सोनाटाइप ओएसएस पर द्विआधारी की मेजबानी करने की योजना है, लेकिन अब आप स्रोत को जिथब और sbt publish-local से खींच सकते हैं यदि आप इसे आजमाएं।

अद्यतन:
Scalavro अब Maven सेंट्रल पर उपलब्ध है।

+0

बहुत अच्छा पर अपने हाथों प्रकार प्रदाताओं के साथ गंदा हो गया। अच्छा काम करते रहें। आप इसे संकलित-समय प्रतिबिंब संस्करण कहां बनाते हैं? –

+0

अभी तक नहीं, लेकिन यह एक असली मजेदार परियोजना होगी। मदद करना चाहते हैं? –

संबंधित मुद्दे