2013-03-25 31 views
15

Để tạo điều kiện làm việc với Avro trong Scala, tôi muốn xác định một lớp chữ thường dựa trên lược đồ được lưu trữ với tệp .avro. Tôi có thể thử:Tôi có thể lấy định nghĩa lớp trường hợp Scala từ định nghĩa lược đồ Avro không?

  1. Viết định nghĩa lớp vỏ .scala bằng tay.
  2. lập trình viết các chuỗi vào một tập tin .scala
  3. Spoof định nghĩa lớp trường hợp với một thư viện bytecode như ASM ObjectWeb của
  4. SpecificCompiler thủ đoạn?
  5. Sửa đổi định nghĩa phân loại trường hợp hiện tại khi chạy?

Xin cảm ơn, mọi lời khuyên đều được đánh giá cao. -Julian

Trả lời

14

Tôi đã truy cập vào một dự án nhỏ gọi là Scalavro để đi theo cách khác (các loại Scala tới lược đồ Avro). Nó cũng cung cấp cho bạn trực tiếp nhị phân I/O.

Ví dụ đơn giản:

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

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

val personAvroType = AvroType[Person] 
personAvroType.schema 

trong đó sản lượng:

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

Có rất nhiều ví dụ khác về khu vực dự án (liên kết ở trên) và trong số kỹ thuật scalatest.

Tôi có kế hoạch lưu trữ các tệp nhị phân trên OSS Sonatype trong tương lai gần, nhưng hiện tại bạn có thể lấy nguồn từ github và sbt publish-local nếu bạn muốn dùng thử.

Cập nhật:
Scalavro bây giờ đã có trên Maven Trung ương.

+0

Rất đẹp. Hãy tiếp tục phát huy. Bạn xem xét làm cho nó đến nơi có phiên bản phản ánh thời gian biên dịch? –

+0

Chưa, nhưng đó sẽ là một dự án thực sự thú vị. Bạn muốn giúp đỡ? –

Các vấn đề liên quan