问题标签 [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.
apache-spark - java.lang.NoClassDefFoundError: com/databricks/spark/avro/package$
我正在使用 spark 1.3.0 和 spark-avro 1.0.0。我的 build.sbt 文件看起来像
我正在使用程序集插件构建一个胖罐子。
但是,有时我的代码会因以下错误而失败。如果我这样做,jar -tf Fooassembly.jar
我可以在 'com/databricks/spark/avro' 文件夹中看到很多 .class 文件。所以我不知道为什么它抱怨这个特殊的班级。
java - How to serialize the data to AVRO schema in Spark (with Java)?
I have defined an AVRO schema, and generated some classes with avro-tools for the schemes. Now, I want to serialize the data to disk. I found some answers about scala for this, but not for Java. The class Article
is generated with avro-tools, and is made from a schema defined by me.
Here's a simplified version of the code of how I try to do it:
where serializeArticleToDisk(avroFileName)
is defined as follows:
where Article
is my avro schema.
Now, the mapper throws me the error:
although the file path is correct.
I use a collect()
method afterwards, so everything else within the map
function works fine (except for the serialization part).
I am quite new with Spark, so I am not sure if this might be something trivial actually. I suspect that I need to use some writing functions, not to do the writing in the mapper (not sure if this is true, though). Any ideas how to tackle this?
EDIT:
The last line of the error stack-trace I showed, is actually on this part:
dataFileWriter.create(this.article.getSchema(), new File(filename));
This is the part that throws the actual error. I am assuming the dataFileWriter
needs to be replaced with something else. Any ideas?
scala - 找出导致异常的文件
我在 HDFS 上打开一堆文件(大约 50 个),如下所示:
然后我做了一堆操作,df
在某些时候我得到:
我怀疑其中一个文件可能存在问题,但我不知道是哪个文件。如果我与其中一个一起运行,则作业会正确完成。
有没有办法捕捉异常并找出哪个是坏苹果?
scala - 从 Apache Spark 中的 Avro 文件中读取不受支持的联合类型组合
我正在尝试从读取 csv 平面文件切换到 spark 上的 avro 文件。遵循https://github.com/databricks/spark-avro 我使用:
并得到
自述文件明确指出:
该库支持读取所有 Avro 类型,复杂联合类型除外。它使用以下从 Avro 类型到 Spark SQL 类型的映射:
当我尝试对同一个文件进行文本读取时,我可以看到架构
{"name":"log_record","type":"record","fields":[{"name":"request","type":{"type":"record","name":"request_data ","fields":[{"name":"datetime","type":"string"},{"name":"ip","type":"string"},{"name":"host ","type":"string"},{"name":"uri","type":"string"},{"name":"request_uri","type":"string"},{"name ":"referer","type":"string"},{"name":"useragent","type":"string"}]}}
<-------完整回复的摘录------->
因为我对获取这些文件的格式几乎没有控制权,所以我的问题是 -有没有人测试过并且可以推荐的解决方法?
我使用 gc dataproc
MASTER=yarn-cluster spark-shell --num-executors 4 --executor-memory 4G --executor-cores 4 --packages com.databricks:spark-avro_2.10:2.0.1,com.databricks:spark-csv_2 .11:1.3.0
任何帮助将不胜感激.....
apache-spark - 通过火花流或水槽将 Xml 转换为 Avro 从 Kafka 到 hdfs
我想将 xml 文件转换为 avro。数据将是xml格式,将首先命中kafka主题。然后,我可以使用 flume 或 spark-streaming 来摄取并从 xml 转换为 avro 并将文件放在 hdfs 中。我有一个cloudera环境。
当 avro 文件命中 hdfs 时,我希望能够稍后将它们读入配置单元表。
我想知道最好的方法是什么?我已经尝试过自动模式转换,例如 spark-avro(这是没有 spark-streaming),但问题是 spark-avro 转换数据但配置单元无法读取它。Spark avro 将 xml 转换为数据帧,然后从数据帧转换为 avro。avro 文件只能由我的 spark 应用程序读取。我不确定我是否正确使用它。
我想我需要为 avro 模式定义一个显式模式。不确定如何处理 xml 文件。它有多个命名空间并且非常庞大。
apache-spark - 在 spark-shell 中使用 avro 时出现 NoClassDefFoundError
我不断得到
java.lang.NoClassDefFoundError: org/apache/avro/mapred/AvroWrapper
调用show()
DataFrame 对象时。我正在尝试通过外壳(spark-shell --master yarn)来做到这一点。我可以看到 shell 在创建 DataFrame 对象时识别了模式,但是如果我对数据执行任何操作,它总是会NoClassDefFoundError
在尝试实例化AvroWrapper
. 我尝试avro-mapred-1.8.0.jar
在$HDFS_USER/lib
集群上的目录中添加,甚至在启动 shell 时使用 --jar 选项将其包含在内。这些选项都不起作用。任何建议将不胜感激。下面是示例代码:
avro - 如何从包含二进制格式的avro消息的文件中读取/解析*仅* JSON模式?
我在一个文件中有一个二进制格式的 avro 消息。
Obj^A^D^Vavro.schemaÞ^B{"type":"record","name":"rec","namespace":"ns","fields":[{"name":"id", "type":["int","null"]},{"name":"name","type":["string","null"]},{"name":"foo_id","type ":["int","null"]}]}^Tavro.codec^Lsnappy^@¤²/n¹¼Bù<9b> à«_^NÌ^W
我只是对 SCHEMA 感兴趣。有没有办法从这个文件中读取/解析模式?我目前正在手动解析这个文件以提取模式,但我希望 avro 能帮助我以一种标准的方式来做这件事。
scala - Spark - Avro 读取架构但 DataFrame 为空
我正在使用Gobblin定期从中提取关系数据Oracle
,将其转换为avro
并发布到HDFS
我的 dfs 目录结构如下所示
我正在尝试像这样读取它:
当我运行时,printSchema
我可以看到模式被正确解释。
但是,当我运行count
or时show
,它们DataFrames
是空的。我已通过将.avro
文件转换为JSON
我怀疑它可能与目录结构有关。也许 Spark avro 库只从根目录向下一层查找.avro
文件。日志似乎表明驱动程序中仅列出了 t1 下的目录:
16/07/07 10:47:09 信息 avro.AvroRelation:在驱动程序上列出 hdfs://myhost.mydomain.com:8020/user/username/gobblin/job-output/tables/t1
16/07/07 10:47:09 信息 avro.AvroRelation:在驱动程序上列出 hdfs://myhost.mydomain.com:8020/user/username/gobblin/job-output/tables/t1/20160706230001_append
有没有人经历过类似的事情,或者知道如何解决这个问题?t1
因为名称是由时间戳生成的,所以我不得不指向低于目录的位置。
apache-spark - 尝试了解 Spark UI 作业选项卡
我正在开发一个 spark 程序,我必须在其中加载 avro 数据并对其进行处理。我试图了解如何为 spark 应用程序创建作业 ID。我使用下面的代码行来加载 avro 数据。
sqlContext.read.format("com.databricks.spark.avro").load(路径)
据我所知,工作 ID 将根据程序中遇到的操作创建。我的工作计划每 30 分钟运行一次。当我查看此应用程序的 spark 历史服务器时,我看到为加载操作创建了一个作业 ID。它只是偶尔发生,日志看起来非常好。我正在使用火花 1.6.1
我很想知道加载操作是否会在应用程序中创建新的作业 ID?
apache-spark - Spark 在写入 Avro 时更改了架构
我有一个 Spark 作业(在 CDH 5.5.1 中),它加载两个 Avro 文件(都具有相同的架构),将它们组合成一个 DataFrame(也具有相同的架构),然后将它们写回 Avro。
该作业明确比较两个输入模式以确保它们相同。
这用于将现有数据与一些更新结合起来(因为文件是不可变的)。然后,我通过在 HDFS 中重命名它们来用新的组合文件替换原始文件。
但是,如果我重复更新过程(即尝试向先前更新的文件添加一些进一步的更新),作业将失败,因为模式现在不同了!到底是怎么回事?