问题标签 [avro-tools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
837 浏览

json - 如何在 Avro Schema 中同时将类型设置为“记录”和“空”?

我正在尝试将类型设置为同时记录和空。我不知道这是否可能。这是我的输入 json

现在我正在使用 Nifi 创建 Avroschema,

我会得到相应的架构

现在我将验证这个模式并使用 java 代码输入 json。它带来成功。但问题是我不能将请求标签设为空并同时记录。为此,我举了另一个例子。

Avro 架构。如何一次将类型设置为“记录”和“空”

我修改了我的 Avro 架构以满足我将类型设置为 null 并立即记录的要求。

修改后的 Avro 架构:

但是,在使用我的输入 json 验证此架构时,它失败了。我得到了一个像这样的例外。

我需要解决这个问题。

0 投票
0 回答
143 浏览

java - Avro 工具 - 无法在 hadoop 二进制路径中找到 winutils 二进制文件

我关注此文档捕获流事件 - Azure 事件中心 | Microsoft Docs在 Windows Server 2012 R2 中使用 Avro 工具。我收到以下错误消息,屏幕截图: 找不到可执行的 winutils

20/03/31 13:31:24 错误 util.Shell:无法在 hadoop 二进制路径 java.io.IOException 中找到 winutils 二进制文件:无法在 Hadoop 二进制文件中找到可执行的 null\bin\winutils.exe。在 org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:382) 在 org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:397) 在 org.apache.hadoop.util.Shell.( Shell.java:390) 在 org.apache.hadoop.util.StringUtils.(StringUtils.java:80) 在 org.apache.hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:2820) 在 org.apache .hadoop.fs.FileSystem$Cache$Key.(FileSystem.java:2816) 在 org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2682) 在 org.apache.hadoop.fs.FileSystem。 get(FileSystem.java:372) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:171) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:356) at org.apache .hadoop.fs。

{“类型”:“记录”,“名称”:“EventData”,“命名空间”:“Microsoft.ServiceBus.Messaging”,“字段”:[{“名称”:“序列号”,“类型”:“长” },{“名称”:“偏移”,“类型”:“字符串”},{“名称”:“EnqueuedTimeUtc”,“类型”:“字符串”},{“名称”:“系统属性”,“类型” :{“类型”:“地图”,“值”:[“长”,“双”,“字符串”,“字节”]}},{“名称”:“属性”,“类型”:{“类型" : "map", "values" : [ "long", "double", "string", "字节”,“空”] } },{“名称”:“正文”,“类型”:[“空”,“字节”]}]}

0 投票
1 回答
311 浏览

apache-spark - 使用 Spark 生成无模式 avro

有没有办法从 Apache spark 生成架构少的 avro?我可以看到一种通过 Java/Scala 使用 apache avro 库和通过 confluent avro 生成它的方法。当我以下面的方式从 Spark 编写 Avro 时,它会创建带有架构的 Avro。我想创建没有模式以减少最终数据集的大小。

0 投票
1 回答
569 浏览

hive - avro时间戳字段上的配置单元外部表返回一样长

我有具有单列时间戳列的 avro 数据,现在我正在尝试在 avro 文件之上创建外部配置单元表。数据保存在 avro 中,我希望 avro 逻辑类型能够处理转换回时间戳的时间我查询蜂巢表。但这并没有发生在它简单地返回 long 值。我怎样才能让它按预期工作?

PS:我正在使用 spark 2.3 和 databricks com.databrospark-avro_2.11

STEP1 : 将时间戳值存储到 avro

第 2 步:在 AVRO 数据上创建外部 HIVE 表

我试图获取时间戳值,而不是这个长值。

0 投票
0 回答
219 浏览

avro - Avro 工具失败预期启动联合。收到 VALUE_STRING

我已经定义了以下 avro 架构(car_sales_customer.avsc)

我的输入 json 有效载荷(car_sales_customer.json)如下,

我正在尝试使用 avro-tools 并使用 avro 模式将上述 json 转换为 avro,

执行上述语句时出现以下错误,

是否有解决该错误的解决方案?

0 投票
1 回答
1394 浏览

avro - 如何在另一个 Avro 类型中使用 Avro 类型,而无需再次定义它?

我在一个名为"some.package.SourceMetadata"的 json 文件中定义了一个 Avro 类型commonSourceMetadata.avsc

我正在尝试在另一个 avsc 文件中使用它,使用imports我在以下位置找到的关键字Apache Avro 1.7.3

我也试过:

Apache Avro版本1.9是.

我仍然得到:

我也很清楚,它没有考虑到imports或者import因为我试图导入一个不存在的文件并且没有抱怨。

我怎样才能使它成为一个defined name

我们使用 Scala、SBT 和 AvroHugger 插件从 avsc Avro 类型定义生成 Scala 案例类。

0 投票
0 回答
795 浏览

hive - 使用 spark 或 hive 读取 avro 文件时出现无效同步错误

我有一个使用 JAVA api 创建的 avro 文件,当作者在文件中写入数据时,程序由于机器重启而不正常地关闭。现在,当我尝试使用 spark/hive 读取此文件时,它会读取一些数据,然后引发以下错误 (org.apache.avro.AvroRuntimeException: java.io.IOException: Invalid sync!)–</p>

我相信最后的记录被打破并且不正确。我只是想知道是否有一种方法可以通过跳过最后一条记录来读取此文件而不会出现异常/错误。

0 投票
2 回答
284 浏览

avro - 我可以限制 avro-tools 读取的行数吗?

avro-tools tojson file.avro用来检查一个大的 Avro 文件。我只对看几个例子感兴趣,只是为了感受一下数据。

是否有avro-tools tojson限制读取行数的选项?

0 投票
0 回答
83 浏览

python - 在基于 json 数据创建 avro 文件时如何指定编码?

在基于 json 数据创建 avro 文件时如何指定编码?

使用 Apache avro 工具 (jar) 创建的 avro 无法使用 Python 代码读取。

0 投票
0 回答
3032 浏览

java - Avro 无法在字段中使用逻辑类型反序列化联合

Avro 工具版本 - 1.9.2

这是我在反序列化 Avro 数据时面临的问题。当字段是具有空值和逻辑类型的 Union 时,看起来 Avro 无法生成正确的 POJO 类。

当前行为:当 avro 模式有一个字段为空和逻辑类型的联合时。Avro 不添加转换类型数组,因此我们得到类转换异常。这是 original.avsc 的问题

预期行为:Avro 应该能够序列化具有空值的逻辑类型。

看看下面的 original.avsc,没有conversions为任何字段创建数组。这导致ClassCastException由于原始字段数据是原始类型,而 POJO 字段是基于逻辑类型的。

原版.avsc

POJO 基于 Original.avsc

然而,如果我修改原始模式并从逻辑类型字段中取出空值。Avroconversions为逻辑类型字段生成正确的(检查突出显示的部分),我能够成功地将 avro 消息反序列化为 POJO。

修改过的.avsc

从修改后的模式生成 POJO 类

我不明白为什么 Avro 会这样做,而且我对破解原始模式以使事情正常工作感到不舒服。有人可以帮我弄清楚世界是如何处理这些问题的吗?

注意:这个问题与我提出的这个原始问题有关。