当前位置: 首页 > 知识库问答 >
问题:

avro-tools将avdl转换为avsc不能生成正确的avsc

莘光华
2023-03-14

我正在尝试使用avro-tools将avro avdl文件(http://avro.apache.org/docs/1.7.6/idl.html#example)转换为avro模式文件(example.avsc)。我下载了avro-tools 1.7.6和1.6.3

example.avdl

    /**
 * An example protocol in Avro IDL
 */
@namespace("org.apache.avro.test")
protocol Simple {

  @aliases(["org.foo.KindOf"])
  enum Kind {
    FOO,
    BAR, // the bar enum value
    BAZ
  }

  fixed MD5(16);

  record TestRecord {
    @order("ignore")
    string name;

    @order("descending")
    Kind kind;

    MD5 hash;

    union { MD5, null} @aliases(["hash"]) nullableHash;

    array<long> arrayOfLongs;
  }

  error TestError {
    string message;
  }

  string hello(string greeting);
  TestRecord echo(TestRecord `record`);
  int add(int arg1, int arg2);
  bytes echoBytes(bytes data);
  void `error`() throws TestError;
  void ping() oneway;
}

生成的example.avsc

{
  "protocol" : "Simple",
  "namespace" : "org.apache.avro.test",
  "doc" : "* An example protocol in Avro IDL",
  "types" : [ {
    "type" : "enum",
    "name" : "Kind",
    "symbols" : [ "FOO", "BAR", "BAZ" ],
    "order" : "descending",
    "aliases" : [ "org.foo.KindOf" ]
  }, {
    "type" : "fixed",
    "name" : "MD5",
    "size" : 16
  }, {
    "type" : "record",
    "name" : "TestRecord",
    "fields" : [ {
      "name" : "name",
      "type" : {
        "type" : "string",
        "order" : "ignore"
      }
    }, {
      "name" : "kind",
      "type" : "Kind"
    }, {
      "name" : "hash" ...

我在mac上使用以下命令生成它

java-jar avro-tools-1.6.3.jar idl example.avdl(我尝试过1.6.3和1.7.6)

共有1个答案

韩祯
2023-03-14

idl命令生成Avro协议文件(.avpr)-要生成模式(.avsc),您需要使用idl2schemata命令,该命令将输入idl和可选输出目录作为参数(如果不提供当前目录,则使用当前目录),并根据idl中的类型生成一个或多个文件。

java -jar avro-tools-1.7.7.jar idl2schemata example.avdl .
 类似资料:
  • 自从我尝试模拟我的客户端和服务器之间处理数据包的连接以来,我一直在与字节数组和BigIntger进行斗争。 当我的客户端连接到服务器时,服务器发送了一个包含RSA公钥的响应,然后是一个十六进制数据包,如下所示: C70001A1004080之后的64字节是RSA公共指数。RSA指数后的128字节是模数。 然后我尝试提取指数和模来重新生成RSA公钥。我的步骤: 最后我有了一个公钥: 与服务器上的RS

  • 有一个网站这样做,但我想要一个图书馆或CLI。 谢了!

  • 我有一个JSF应用程序,除了调用ManagedBean中以对象为参数的方法外,其他一切都运行得很好: 在SCONTR中: 所有没有自己定义的对象的方法都可以工作(例如,映射、字符串、列表等),访问xhtml中的对象甚至子对象就像一个魅力。 但是,调用此deletePrivilege会导致: 因此,出于某种原因,JSF无法将LinkedHashMap自动转换回用于呈现页面的类的实例。 faces-c

  • 我在编组/解组avro生成的类时遇到了一个奇怪的问题。我得到的错误是抛出一个not enum错误-除了我的类中没有任何枚举。 错误具体如下: com.fasterxml.jackson.databind.JsonMappingException: Not an enum:{"type":"记录","name":"TimeUpdateTopic","namesspace":"org.company.

  • 我正在使用HttpPost向服务器发送一个字符串。这个字符串是一个JSONObject,我之前已经将其转换为字符串,到目前为止,一切都正常工作。。。发送内容类型必须为“application/json”。 要发送它,将我的String转换为StringEntity并添加到httpPost.setEntity(my_string)...问题是服务器告诉我不识别数据(准备接收转换为String的JSO

  • 问题内容: 我正在使用d3.js可视化一些数据。我希望能够采用它生成的SVG代码并将其存储为图像文件(用于在Inkscape / Illustrator中进行编辑)。 我试过简单地复制svg标签的内容,即 放入名为image.svg的文件中,但这会漏掉两个单独的CSS文件中的颜色/样式信息。 有没有简单的方法可以做到这一点? 问题答案: 我认为SVG Crowbar可能是解决此问题的最佳方法。