问题标签 [spark-avro]

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 投票
2 回答
384 浏览

apache-kafka - 在 Spark 任务中将数据保存到 ElasticSearch

在通过 Kafka 和 Spark 处理 Avro 消息流时,我将处理后的数据保存为 ElasticSearch 索引中的文档。这是代码(简化):

一切都按预期工作;唯一的问题是性能:保存到 ES 需要一些时间,我想这是因为我为每个 RDD 打开/关闭了一个 ES 传输客户端。Spark文档表明这种方法是非常正确的:据我了解,唯一可能的优化是使用 rdd.foreachPartition,但我只有一个分区,所以我不确定这是否有益。还有其他解决方案可以实现更好的性能吗?

0 投票
1 回答
369 浏览

apache-spark - 如何从空 RDD 中读取 Avro 模式?

我正在使用AvroKeyInputFormat读取 avro 文件:

因为我需要在工作中反思架构,所以我得到了这样的 Avro 架构:

不幸的是,如果 avro 文件path为空(它们包括 writer 模式,但没有记录),这将失败。

即使没有记录,是否有一种简单的方法可以仅使用 Spark 加载 avro 模式?

0 投票
0 回答
826 浏览

apache-spark - 从目录流式传输 avro 文件

我正在尝试从 Avro 文件目录设置结构化流。我们已经有一些非流式代码来处理完全相同的数据,因此流式传输最省力的一步就是重用该代码。

为了转移到 StructuredStreaming,我尝试了以下方法,它以非流方式工作(使用read而不是readStream),但在流方式中给了我一个序列化错误。

我得到的异常如下所示。请注意,我无法获得完整的堆栈跟踪,因为我在 Databricks 上并无法访问执行程序日志。我有点不知所措,无法序列化的对象到底是什么。

0 投票
1 回答
1710 浏览

java - 如何在不知道 avro 模式的情况下在 scala 中读取 Avro Encoded kafka 消息?

我需要编写一个 Scala 或 Java 客户端来从一个主题中读取 Kafka 消息,该主题的消息是 Avro 编码的并且模式会动态变化。

请提出一个解决方案来读取这些消息而不写入 Avro 文件。

0 投票
1 回答
315 浏览

apache-spark - Spark Avro 引发:引起:java.lang.IllegalArgumentException:对象不是声明类的实例

我正在尝试创建一个数据框并以 avro 格式写入结果。这给出了主题中提到的 IllegalArgumentException 异常。如果我将它保存为文本文件但在编写 avro 时失败,它可以正常工作。使用 spark 的 java api。使用火花提交。注意:使用 scala 或 spark-shell 时不会出现此错误。

使用的依赖项:-

下面是堆栈跟踪:-

0 投票
2 回答
12279 浏览

avro - 单一模式中相同类型的 Avro 多条记录

我喜欢在 Avro 模式中多次使用相同的记录类型。考虑这个模式定义

这不是有效的 Avro 架构,并且 Avro 架构解析器失败并显示

org.apache.avro.SchemaParseException:无法重新定义:my.types.OrderBookVolume

我可以通过将 OrderBookVolume 移动到两个不同的命名空间来使类型唯一来解决此问题:

这不是一个有效的解决方案,因为 Avro 代码生成会生成两个不同的类,如果我想将该类型也用于其他事情而不仅仅是 deser 和 ser,这将非常烦人。

此问题与此问题有关: Avro Spark issue #73

通过在命名空间前面加上外部记录名称,增加了同名嵌套记录的区别。他们的用例可能纯粹与存储相关,因此它可能对他们有用,但对我们无效。

有人知道更好的解决方案吗?这是 Avro 的硬性限制吗?

0 投票
0 回答
214 浏览

databricks - 错误:未找到:值 SchemaConverters

我正在使用databricks我的用例,我必须将avro架构转换为struct type. 当我搜索时,它说spark-avro必须SchemaConverters这样做。但是,我正在使用spark-avro-2.11-4.0库,当我使用时SchemaConverters,我得到

“错误:未找到:值 SchemaConverters”。

请帮助解决这个问题。

0 投票
2 回答
2058 浏览

avro - avro json 附加字段

我有以下 avro 架构

当我使用 Json 解码器和 avro 编码器对 Json 数据进行编码时:

方案 1: 当我传递以下 json 进行编码时,它工作正常:

场景2: 当我在根级别(姓氏)的json中传递附加属性时,它能够编码并且工作正常:

场景3: 当我在数组记录(国家)中添加附加属性时,它会引发以下异常:

我需要让场景#3 工作,任何帮助都会很棒。

0 投票
2 回答
536 浏览

java - 使用不同的字段名称在 Java 类上映射 Avro 文件

我遇到了简单的 spark 任务的问题,它读取 Avro 文件,然后将其保存为 Hive parquet 表。

我有 2 种类型的文件,通常它们是相同的,但关键结构有点不同 - 字段名称。

类型 1

类型 2

我正在使用 spark-avro 阅读 Avro。然后像这样将这个DF映射到bean

SomeClass 是一个带有 getter 和 setter 的简单单字段类。

因此,如果我正在阅读 Avro type 1 - 没关系。但是,如果我正在阅读 Avro 类型 2 - 就会发生错误。反之亦然,如果我将字段名称更改为private String id;

我的问题有什么通用的解决方案吗?我找到了@AvroName,但它不允许设置多个名称。谢谢。

0 投票
0 回答
657 浏览

google-bigquery - 来自 Avro 的 Bigquery 负载无法从 long 转换为 int

我正在尝试将 avro 文件从谷歌存储加载到大查询表,但遇到了这些问题。我遵循的步骤如下。

  1. 在 Spark 中创建一个数据框。
  2. 通过将这些数据写入 avro 来存储这些数据。

    dataframe.write.avro("路径")

  3. 将这些数据加载到谷歌存储中。

  4. 尝试使用以下命令将数据加载到 google bigquery

    bq --nosync load --autodetect --source_format AVRO datasettest.testtable gs://test/avrodebug/*.avro

此命令导致给出此错误。

读取数据时出错,错误消息:Apache Avro 库无法读取数据并出现以下错误:无法解析:“long”与“int”

所以我什至尝试通过指定模式来使用这个命令。bq --nosync load --source_format AVRO datasettest.testtable gs://test/avrodebug/*.avro C1:STRING, C2:STRING, C3:STRING, C4:STRING, C5:STRING, C6:INTEGER, C7:INTEGER ,C8:整数,C9:字符串,C10:字符串,C11:字符串

在这里,我只有 C6、C7 和 C8 具有整数值。即使这也给出了相同的先前错误。

有什么理由让我在 long to int 而不是 long to INTEGER 上得到错误

请让我知道有没有办法通过投射来加载这些数据。