问题标签 [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.
scala - 如何将一列与avro文件中的其他列映射?
我正在使用 Spark 2.1.1 和 Scala 2.11.8
这个问题是我之前的一个问题的延伸:
变化在于,我现在不是从 CSV 文件中读取数据,而是从 avro 文件中读取数据。这是我从中读取数据的 avro 文件的格式:
我在一个单独的类中解析 avro 文件。
我必须以与上面发布的链接的已接受答案中提到的相同方式将 tids 列与每个 uid 映射,除了这次来自 avro 文件而不是格式良好的 csv 文件。我怎样才能做到这一点?
这是我正在尝试使用的代码:
在 obj.tids 之后,必须单独映射所有 uids 列,以提供与上述链接的已接受答案中所述相同的最终输出。
这就是我在 avro 文件解析类中解析所有 uid 的方式:
PS:如果这个问题看起来很愚蠢,我很抱歉,但这是我第一次遇到 avro 文件
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
hadoop - 蜂巢上的火花。读取镶木地板文件
我正在尝试将镶木地板文件读入 Spark 上的 Hive。
所以我发现我应该做一些这样的事情:
我的 avro 方案是:
结果我收到一个错误:
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.
如果我去掉那个前缀,那么我得到:
这可能吗?保存处理会很好。
apache-spark - Spark SQL:处理模式演变
我想读取相同数据集的 2 个 avro 文件,但具有模式演变
- 第一个 avro 文件架构:{String, String, Int}
- 第二个 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 个这样的文件。
先感谢您:)
apache-spark - 由于 _SUCCESS 文件,Spark 从先前的写入结果中读取 avro 结果导致“不是 avro 数据文件”
我正在使用出色的 databricks 连接器来读取/写入 avro 文件。我有以下代码
问题是当我尝试使用 sqlContext.read.avro(someDirectory) 读取此目录时
它失败了
由于该目录中存在 _SUCCESS 文件。
设置sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")
解决了这个问题,但我宁愿避免这样做。
这听起来像是一个非常普遍的问题,所以我可能做错了什么?
apache-spark - 如何查询avro格式的数据集?
这适用于镶木地板
我用 Avro 尝试了同样的方法,但即使我使用com.databricks.spark.avro
.
当我执行以下查询时:
我得到AnalysisException
. 为什么?
将格式名称更改为com.databricks.spark.avro
没有任何区别并且查询失败。
hadoop - 在 emr 中使用 spark 从 S3 读取 avro 失败
在 aws-emr 执行我的 Spark 作业时,尝试从 s3 存储桶读取 avro 文件时出现此错误:它发生在版本中:
- 电子病历 - 5.5.0
- 电子病历 - 5.9.0
这是代码:
例外:
`
apache-spark - 如何使用模式将数据帧转换为 avro?
如何使用用户指定的模式将数据帧转换为 Avro 格式?
hdfs - Avro 模式更新,一个 avro 文件中有两个模式
我有一个带有第一个架构的 avro 文件,然后我更新了附加到同一文件的架构。所以现在我在一个文件中有两个模式。avro 如何处理这种情况。我会在文件中添加任何新字段还是在读取这些数据时丢失任何数据。这是一个实时流应用程序,我将数据写入 hdfs。我的上游系统可能会更新架构,但 hdfs 编写器可能在旧架构上。所以 hdfs avro 文件将有两个模式,直到我更新编写器以处理更新的模式。
注意 - 我没有架构注册表,我每天创建一个 avro 文件。因此,如果在一天中更新了一个模式,我将拥有一个包含两个模式的 avro 文件。