问题标签 [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 回答
171 浏览

scala - 如何将一列与avro文件中的其他列映射?

我正在使用 Spark 2.1.1 和 Scala 2.11.8

这个问题是我之前的一个问题的延伸:

如何识别 csv 文件中的空字段?

变化在于,我现在不是从 CSV 文件中读取数据,而是从 avro 文件中读取数据。这是我从中读取数据的 avro 文件的格式:

我在一个单独的类中解析 avro 文件。

我必须以与上面发布的链接的已接受答案中提到的相同方式将 tids 列与每个 uid 映射,除了这次来自 avro 文件而不是格式良好的 csv 文件。我怎样才能做到这一点?

这是我正在尝试使用的代码:

在 obj.tids 之后,必须单独映射所有 uids 列,以提供与上述链接的已接受答案中所述相同的最终输出。

这就是我在 avro 文件解析类中解析所有 uid 的方式:

PS:如果这个问题看起来很愚蠢,我很抱歉,但这是我第一次遇到 avro 文件

0 投票
1 回答
812 浏览

avro - databricks avro 架构无法转换为 Spark SQL 结构类型

我们有 kakfa hdfs 连接器以默认的 avro 格式写入 hdfs。一个样本o / p:

对象^A^B^Vavro.schema"["null","string"]^@$ͳø{<9d>¾Ã^X:<8d>uV^K^H5^F°^F^B<8a>^ B{"severity":"notice","message":"测试消息","facility":"kern","syslog-tag":"sawmill_test:","timestamp":"2017-01-31T20:15 :00+00:00"}^B<8a>^B{"severity":"notice","message":"Test message","facility":"kern","syslog-tag":"sawmill_test: ","timestamp":"2017-01-31T20:15:00+00:00"}^B<8a>^B{"severity":"notice","message":"测试消息","facility" :"kern","syslog-tag":"sawmill_test:","timestamp":"2017-01-31T20:15:00+00:00"}$ͳø{<9d>¾×X:<8d>uV^K^H5

尝试阅读使用:

我们得到以下错误

java.lang.RuntimeException:Avro 架构无法转换为 org.apache 的 com.databricks.spark.avro.DefaultSource.inferSchema(DefaultSource.scala:93) 的 Spark SQL StructType:[“null”,“string”]。 spark.sql.execution.datasources.DataSource$$anonfun$7.apply(DataSource.scala:184) at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$7.apply(DataSource.scala:184) at org.apache.spark.sql.execution.datasources.DataSource.org$apache$spark$sql$execution$datasources$DataSource$$getOrInferFileFormatSchema(DataSource.scala:183) 的 scala.Option.orElse(Option.scala:289)在 org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:387) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152) 在 org.apache.spark.sql .DataFrameReader。在 com.databricks.spark.avro.package$AvroDataFrameReader$$anonfun$avro$2.apply(package.scala:34) 在 com.databricks.spark.avro.package$AvroDataFrameReader$$anonfun 加载(DataFrameReader.scala:135) $avro$2.apply(package.scala:34)

请帮忙

火花版本:2.11

Spark-avro 版本:2.11-3.2.0

卡夫卡版本:0.10.2.1

0 投票
1 回答
1332 浏览

hadoop - 蜂巢上的火花。读取镶木地板文件

我正在尝试将镶木地板文件读入 Spark 上的 Hive。

所以我发现我应该做一些这样的事情:

我的 avro 方案是:

结果我收到一个错误:

0 投票
1 回答
687 浏览

apache-spark - 如何手动将 spark-redshift AVRO 文件加载到 Redshift 中?

我有一个COPY在写入部分失败的 Spark 作业。我已经在 S3 中处理了所有输出,但是在弄清楚如何手动加载它时遇到了麻烦。

在我的文件夹中有一个_SUCCESS,_committedxxx_startedxxx文件,然后是 99 个文件都以前缀开头part-。当我运行它时,我得到一个stl_load_error->Invalid AVRO file found. Unexpected end of AVRO file. 如果我去掉那个前缀,那么我得到:

这可能吗?保存处理会很好。

0 投票
1 回答
1259 浏览

apache-spark - Spark SQL:处理模式演变

我想读取相同数据集的 2 个 avro 文件,但具有模式演变

  1. 第一个 avro 文件架构:{String, String, Int}
  2. 第二个 avro 文件架构演变:{String, String, Long}

(Int 字段经过演化到 long)我想使用 sparkSQL 读取这两个 avro 文件以存储在数据框中。

要读取 avro 文件,我正在使用 databicks 的“spark-avro” https://github.com/databricks/spark-avro

如何有效地做到这一点。

Spark 版本:2.0.1 Scala。2.11.8

PS。这里在示例中我只提到了 2 个文件,但在实际场景中每天都会生成文件,因此有超过 1000 个这样的文件。

先感谢您:)

0 投票
0 回答
514 浏览

apache-spark - 由于 _SUCCESS 文件,Spark 从先前的写入结果中读取 avro 结果导致“不是 avro 数据文件”

我正在使用出色的 databricks 连接器来读取/写入 avro 文件。我有以下代码

问题是当我尝试使用 sqlContext.read.avro(someDirectory) 读取此目录时

它失败了

由于该目录中存在 _SUCCESS 文件。

设置sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")解决了这个问题,但我宁愿避免这样做。

这听起来像是一个非常普遍的问题,所以我可能做错了什么?

0 投票
3 回答
7828 浏览

apache-spark - 如何查询avro格式的数据集?

这适用于镶木地板

我用 Avro 尝试了同样的方法,但即使我使用com.databricks.spark.avro.

当我执行以下查询时:

我得到AnalysisException. 为什么?

将格式名称更改为com.databricks.spark.avro没有任何区别并且查询失败。

0 投票
2 回答
862 浏览

hadoop - 在 emr 中使用 spark 从 S3 读取 avro 失败

在 aws-emr 执行我的 Spark 作业时,尝试从 s3 存储桶读取 avro 文件时出现此错误:它发生在版本中:

  • 电子病历 - 5.5.0
  • 电子病历 - 5.9.0

这是代码:

例外:

`

0 投票
1 回答
3174 浏览

apache-spark - 如何使用模式将数据帧转换为 avro?

如何使用用户指定的模式将数据帧转换为 Avro 格式?

0 投票
1 回答
413 浏览

hdfs - Avro 模式更新,一个 avro 文件中有两个模式

我有一个带有第一个架构的 avro 文件,然后我更新了附加到同一文件的架构。所以现在我在一个文件中有两个模式。avro 如何处理这种情况。我会在文件中添加任何新字段还是在读取这些数据时丢失任何数据。这是一个实时流应用程序,我将数据写入 hdfs。我的上游系统可能会更新架构,但 hdfs 编写器可能在旧架构上。所以 hdfs avro 文件将有两个模式,直到我更新编写器以处理更新的模式。

注意 - 我没有架构注册表,我每天创建一个 avro 文件。因此,如果在一天中更新了一个模式,我将拥有一个包含两个模式的 avro 文件。