标签: avro

Apache Thrift,Google Protocol Buffers,MessagePack,ASN.1和Apache Avro之间的主要区别是什么?

所有这些都提供了二进制序列化,RPC框架和IDL.我对它们与特性(性能,易用性,编程语言支持)之间的关键差异感兴趣.

如果您了解任何其他类似技术,请在答案中提及.

thrift asn.1 protocol-buffers avro

121
推荐指数
6
解决办法
3万
查看次数

镶木地板格式与其他格式相比有哪些优缺点?

Apache Parquet的特点是:

  • 自描述
  • 列式格式
  • 与语言无关

与Avro,序列文件,RC文件等相比.我想要格式的概述.我已经读过:Impala如何与Hadoop文件格式配合使用,它提供了一些格式的见解,但我想知道如何以这些格式完成数据访问和数据存储.木地板如何优于其他木地板?

hadoop file hdfs avro parquet

112
推荐指数
4
解决办法
7万
查看次数

Avro vs. Parquet

我打算在hadoop相关项目中使用hadoop文件格式之一.我知道实木复合地板对于基于列的查询是有效的,而avro可用于全扫描或当我们需要所有列数据时!

在我继续选择其中一种文件格式之前,我想了解一种文件格式的缺点/缺点.任何人都可以用简单的语言向我解释一下吗?

hadoop avro parquet

82
推荐指数
6
解决办法
7万
查看次数

Avro字段默认值

我遇到了一些设置Avro字段默认值的问题.我有一个简单的架构,如下所示:

data.avsc:

{
 "namespace":"test",
 "type":"record",
 "name":"Data",
 "fields":[
    { "name": "id", "type": [ "long", "null" ] },
    { "name": "value", "type": [ "string", "null" ] },
    { "name": "raw", "type": [ "bytes", "null" ] }
 ]
}
Run Code Online (Sandbox Code Playgroud)

我使用avro-maven-plugin v1.7.6生成Java模型.

当我使用:创建模型的实例时 Data data = Data.newBuilder().build();,它失败并出现异常:

org.apache.avro.AvroRuntimeException:org.apache.avro.AvroRuntimeException:字段ID类型:UNION pos:0未设置且没有默认值.

但是如果我指定"默认"属性,

{ "name": "id", "type": [ "long", "null" ], "default": "null" },
Run Code Online (Sandbox Code Playgroud)

我没有得到这个错误.我在文档中读到联合中的第一个模式成为默认模式.所以我的问题是,为什么我仍然需要指定"默认"属性?我怎么做一个字段可选?

如果我确实需要指定默认值,那么它对联合的作用如何; 我是否需要为联合中的每个模式指定默认值,以及它在顺序/语法方面如何工作?

谢谢.

java maven avro

34
推荐指数
3
解决办法
5万
查看次数

镶木地板格式的图式演变

目前我们正在生产中使用Avro数据格式.在Avro的N个优点中,我们知道它在模式演化方面很有用.

现在我们正在评估Parquet格式,因为它在阅读随机列时具有很高的效率.所以在继续前进之前我们关心的是架构演变!

有谁知道,如果模式演化是可能的实木复合地板,如果是如何,如果没有为什么.一些演示文稿说它是可能的但是只能在最后添加列

这是什么意思?

hadoop data-warehouse avro apache-spark parquet

28
推荐指数
2
解决办法
2万
查看次数

如何使用Avro二进制编码器对Kafka消息进行编码/解码?

我正在尝试使用Avro来读取/写入Kafka的消息.有没有人有一个使用Avro二进制编码器编码/解码将被放在消息队列中的数据的例子?

我需要Avro部件而不是Kafka部件.或者,也许我应该看一个不同的解决方案?基本上,我正试图在空间方面找到更有效的JSON解决方案.刚刚提到Avro,因为它比JSON更紧凑.

java avro apache-kafka

27
推荐指数
3
解决办法
5万
查看次数

如何在Avro架构中嵌套记录?

我正在尝试让Python解析Avro架构,如下所示......

from avro import schema

mySchema = """
{
    "name": "person",
    "type": "record",
    "fields": [
        {"name": "firstname", "type": "string"},
        {"name": "lastname", "type": "string"},
        {
            "name": "address",
            "type": "record",
            "fields": [
                {"name": "streetaddress", "type": "string"},
                {"name": "city", "type": "string"}
            ]
        }
    ]
}"""

parsedSchema = schema.parse(mySchema)
Run Code Online (Sandbox Code Playgroud)

......我得到以下异常:

avro.schema.SchemaParseException: Type property "record" not a valid Avro schema: Could not make an Avro Schema object from record.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python avro

27
推荐指数
2
解决办法
2万
查看次数

如何使用Avro创建包含对象列表的模式?

有谁知道如何创建包含某些类对象列表的Avro架构?

我希望我生成的类如下所示:

class Child {
    String name;
}

class Parent {
    list<Child> children;
}
Run Code Online (Sandbox Code Playgroud)

为此,我编写了部分模式文件,但不知道如何告诉Avro创建类型对象列表Children

我的架构文件如下所示:

{
    "name": "Parent",
    "type":"record",
    "fields":[
        {
            "name":"children",
            "type":{
                "name":"Child",
                "type":"record",
                "fields":[
                    {"name":"name", "type":"string"}
                ]
            }
        }
    ] 
}
Run Code Online (Sandbox Code Playgroud)

现在问题是我可以将字段标记childrenChild类型或数组,但不知道如何将其标记为array of objects of type Child类?

有人可以帮忙吗?

java schema avro

26
推荐指数
2
解决办法
3万
查看次数

在avro中存储架构有什么好处?

我们需要序列化一些数据以放入solr和hadoop.

我正在评估序列化工具.

我名单中的前两位是Gson和Avro.

据我所知,Avro = Gson + Schema-In-JSON

如果这是正确的,我不明白为什么Avro如此受Solr/Hadoop的欢迎?

我在互联网上搜索了很多,但找不到一个正确的答案.

它所说的任何地方,Avro都很好,因为它存储架构.我的问题是如何处理该架构?

对于Hadoop中的非常大的对象可能是好的,其中单个对象存储在多个文件块中,使得存储每个部分的模式有助于更好地分析它.但即使在这种情况下,模式也可以单独存储,只需对其进行引用就足以描述模式.我认为没有理由为什么架构应该成为每一件作品的一部分.

如果有人可以给我一些好的用例,Avro如何帮助他们,而Gson/Jackson不能达到此目的,那将非常有帮助.

此外,Avro网站上的官方文档说我们需要为Avro提供一个架构,以帮助它生成Schema + Data.我的问题是,如果输入架构并将相同的数据发送到输出以及数据的JSON表示,那么Avro正在实现什么额外的?我可以不通过使用JSON序列化对象,添加我的输入模式并将其称为Avro来自己做吗?

我真的很困惑!

java apache solr hadoop avro

23
推荐指数
2
解决办法
1万
查看次数

Avro模式中的多态性和继承

是否可以编写一个Avro架构/ IDL来生成扩展基类或实现接口的Java类?似乎生成的Java类扩展了org.apache.avro.specific.SpecificRecordBase.因此,工具可能是要走的路.但是,我不知道这是否可行.

我已经看到了一些示例,其中提出了在每个特定模式中定义显式"类型"字段的建议,其中包含的关联多于继承语义.

我在我的工厂类和代码的其他部分中大量使用我的基类<T extends BaseObject>.目前,我有从JSON Schema生成的代码,它支持继承.

另一个问题是:你可以使用IDL来定义没有协议定义的记录吗?我认为答案是否定的,因为编译器抱怨缺少协议关键字.

帮助赞赏!谢谢.

avro

23
推荐指数
2
解决办法
9848
查看次数