问题标签 [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 投票
1 回答
4839 浏览

java - 在 Avro Schema 的嵌套字段中设置值

我正在尝试使用 GenericData.Record 将 avro 数据生成到 kafka 中,但出现以下异常:

线程“主”org.apache.avro.AvroRuntimeException 中的异常:不是有效的架构字段:emailAddresses.email

这是我的架构:

我的Java代码如下:

任何人都知道如何将嵌套值放入 avro 记录中?

0 投票
1 回答
589 浏览

apache-spark - 使用火花流将 avro 数据集加载到 Teradata 时出现问题

我正在尝试通过火花流 (jdbc) 将 avro 文件的数据集加载到 Teradata 表中。配置设置正确,加载在一定程度上成功(我可以验证数据行是否已插入表中),但中途开始出现异常,加载失败。堆栈跟踪如下。关于可能导致这种情况的任何暗示?

0 投票
1 回答
4204 浏览

java - 如何将嵌套的 avro GenericRecord 转换为 Row

我有一个代码可以使用函数将我的 avro 记录转换为 RowavroToRowConverter()

此功能不适用于嵌套模式(TYPE= UNION)

谁能建议我如何将复杂模式转换为 ROW?

0 投票
2 回答
9630 浏览

apache-spark - Spark DataFrame:编写为 Avro 时如何指定架构

我想使用提供的 Avro 模式而不是 Spark 的自动生成模式来编写 Avro 格式的 DataFrame。如何告诉 Spark 在写入时使用我的自定义架构?

0 投票
2 回答
2787 浏览

apache-spark - 如果在 avro 模式中添加了新列,则 Spark sql saveAsTable 创建表追加模式

我正在使用 Spark sql DataSet 将数据写入配置单元。如果架构相同,它可以正常工作,但是如果我更改 avro 架构,在两者之间添加新列,它会显示错误(架构是从架构注册表提供的)

Error running job streaming job 1519289340000 ms.0 org.apache.spark.sql.AnalysisException: The column number of the existing table default.sample(struct<collection_timestamp:bigint,managed_object_id:string,managed_object_type:string,if_admin_status:string,date:string,hour:int,quarter:bigint>) doesn't match the data schema(struct<collection_timestamp:bigint,managed_object_id:string,if_oper_status:string,managed_object_type:string,if_admin_status:string,date:string,hour:int,quarter:bigint>);

if_oper_status是必须添加新列。请建议。

0 投票
1 回答
1503 浏览

spark-avro - 如何从 StructType 获取 avro 模式

我有一个数据框

dataset.schema()正在返回我一个 StructType。

但我希望将实际架构存储在sample.avsc文件中

基本上我想将 StructType 转换为 Avro Schema 文件(.avsc)。

任何想法?

0 投票
0 回答
292 浏览

google-cloud-platform - 零字节 avro 文件异常

我目前正在使用 avro 1.8.2 来编写日志事件。我正在观察某些非常罕见的情况,其中我的 DataFileWriter 实际上正在写出 0 字节文件。据我了解,一个有效的 avro 文件应该总是有标题。代码片段如下所示:

我观察到的是 0 字节 .log 文件,假设移动是原子的,我想我正在以某种方式写入损坏的 0 字节 avro .tmp 文件,这些文件作为 0 字节 .log 文件保存在磁盘上。在读回 0 字节文件时,我得到以下异常:

java.io.IOException:不是数据文件。62512:在 org.apache.avro.file.DataFileStream.initialize(DataFileStream.java:102) 62513:在 org.apache.avro.file.DataFileStream.(DataFileStream.java:84)

有没有人遇到过这样的 0 字节损坏的 avro 文件。原因是什么,因为通过代码我不清楚这怎么可能,因为尝试在本地复制我总是得到几个带有标题的字节。我真的需要在关闭它们并以原子方式移动它们之后对我的 avro 文件进行 fsync 吗?是否在任何元数据或标头同步到磁盘之前移动文件。(我的环境是 GCP 上的 Google 计算实例)任何有关调试的见解都会非常有帮助。

0 投票
4 回答
20675 浏览

scala - 如何在 Spark 中创建一个空的 dataFrame

我有一组基于 Avro 的配置单元表,我需要从中读取数据。由于 Spark-SQL 使用 hive serdes 从 HDFS 读取数据,它比直接读取 HDFS 慢得多。所以我使用数据块 Spark-Avro jar 从底层 HDFS 目录读取 Avro 文件。

一切正常,除非桌子是空的。我已设法使用以下命令从 hive 表的 .avsc 文件中获取架构,但出现错误“未找到 Avro 文件

解决方法:

我在该目录中放置了一个空文件,并且同样的工作正常。

有没有其他方法可以达到同样的效果?像conf设置什么的?

0 投票
1 回答
909 浏览

avro - 将多个不同记录的数组以 Avro 格式写入同一个文件

我们有一些旧文件格式,我需要将其迁移到 Avro 存储。棘手的部分是记录基本上有

  • 一些常见的字段
  • 一个鉴别域
  • 一些独特的字段,特定于鉴别器字段选择的类型

所有这些都存储在同一个文件中,没有任何顺序,完全相互混合。(这是遗产……)

在 Java/面向对象编程中,可以将我们的记录概念表示如下:

想象一下数据是这样的:

所以我想处理一个传入的文件并将其内容写入 Avro 格式,以某种方式表示不同类型的记录。

有人可以给我一些关于如何实现这一目标的想法吗?

0 投票
0 回答
125 浏览

apache-spark - 如何将火花流数据集 [String] 转换为 DataFrame [Row]

我有一个非标准的 kafka 格式消息,所以代码如下所示

此时d是代表csv行的字符串,例如

假设我可以创建一个 csvSchema:StructType

如何使用 csvSchema 将其转换为 Dataframe[Row]?一个复杂的问题是架构大小很大(大约 85 列),因此创建案例类或元组并不是一个真正的选择