Cloudera 5.4.2:使用 Flume 和 Twitter 流时 Avro 块大小无效或太大

2023-12-15

当我尝试 Cloudera 5.4.2 时出现了一个小问题。基于这篇文章

Apache Flume - 获取 Twitter 数据http://www.tutorialspoint.com/apache_flume/fetching_twitter_data.htm

它尝试使用 Flume 和 Twitter 流来获取推文以进行数据分析。一切都很顺利,创建 Twitter 应用程序,在 HDFS 上创建目录,配置 Flume,然后开始获取数据,在推文上创建模式。

那么,问题来了。 Twitter 流将推文转换为 Avro 格式并将 Avro 事件发送到下游 HDFS 接收器,当 Avro 支持的 Hive 表加载数据时,我收到错误消息“Avro 块大小无效或太大”。

哦,avro块是什么以及块大小的限制?我可以改变它吗?根据这条消息,这意味着什么?是文件的错吗?是某些记录的错吗?如果 Twitter 的流媒体遇到错误数据,它应该关闭核心。如果将推文转换为 Avro 格式就可以了,相反,Avro 数据应该可以正确读取,对吧?

我还尝试了 avro-tools-1.7.7.jar

java -jar avro-tools-1.7.7.jar tojson FlumeData.1458090051232

{"id":"710300089206611968","user_friends_count":{"int":1527},"user_location":{"string":"1633"},"user_description":{"string":"Steady Building an Empire..... #UGA"},"user_statuses_count":{"int":44471},"user_followers_count":{"int":2170},"user_name":{"string":"Esquire Shakur"},"user_screen_name":{"string":"Esquire_Bowtie"},"created_at":{"string":"2016-03-16T23:01:52Z"},"text":{"string":"RT @ugaunion: .@ugasga is hosting a debate between the three SGA executive tickets. Learn more about their plans to serve you https://t.co/…"},"retweet_count":{"long":0},"retweeted":{"boolean":true},"in_reply_to_user_id":{"long":-1},"source":{"string":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>"},"in_reply_to_status_id":{"long":-1},"media_url_https":null,"expanded_url":null}

{"id":"710300089198088196","user_friends_count":{"int":100},"user_location":{"string":"DM開放してます(`・ω・´)"},"user_description":{"string":"Exception in thread "main" org.apache.avro.AvroRuntimeException: java.io.IOException: Block size invalid or too large for this implementation: -40

at org.apache.avro.file.DataFileStream.hasNextBlock(DataFileStream.java:275)

at org.apache.avro.file.DataFileStream.hasNext(DataFileStream.java:197)
at org.apache.avro.tool.DataFileReadTool.run(DataFileReadTool.java:77)
at org.apache.avro.tool.Main.run(Main.java:84)
at org.apache.avro.tool.Main.main(Main.java:73)
Caused by: java.io.IOException: Block size invalid or too large for this implementation: -40
at org.apache.avro.file.DataFileStream.hasNextBlock(DataFileStream.java:266)
... 4 more

一样的问题。我用谷歌搜索了很多,根本没有答案。

如果您也遇到了这个问题,有人可以给我一个解决方案吗?或者,如果您完全理解 Avro 内容或下面的 Twitter 流,有人可以帮助您提供线索。

这确实是一个有趣的问题。想一想。


使用 Cloudera TwitterSource

不然会遇到这个问题。

无法将 twitter avro 数据正确加载到 hive 表中

文章中:这是 apache TwitterSource

TwitterAgent.sources.Twitter.type = org.apache.flume.source.twitter.TwitterSource
Twitter 1% Firehose Source
This source is highly experimental. It connects to the 1% sample Twitter Firehose using streaming API and continuously downloads tweets, converts them to Avro format, and sends Avro events to a downstream Flume sink.

不过应该是cloudera Twitter来源:

https://blog.cloudera.com/blog/2012/09/analyzing-twitter-data-with-hadoop/

http://blog.cloudera.com/blog/2012/10/analyzing-twitter-data-with-hadoop-part-2-gathering-data-with-flume/

http://blog.cloudera.com/blog/2012/11/analyzing-twitter-data-with-hadoop-part-3-querying-semi-structed-data-with-hive/

TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSource

而且不要只下载预构建jar,因为我们的cloudera版本是5.4.2,否则你会得到这个错误:

由于 JAR 冲突,无法运行 Flume

你应该使用maven编译它

https://github.com/cloudera/cdh-twitter-example

下载并编译:flume-sources.1.0-SNAPSHOT.jar。该 jar 包含 Cloudera TwitterSource 的实现。

Steps:

wget https://github.com/cloudera/cdh-twitter-example/archive/master.zip

sudo yum 安装 apache-maven 放入flume插件目录:

/var/lib/flume-ng/plugins.d/twitter-streaming/lib/flume-sources-1.0-SNAPSHOT.jar 

MVN包

注意:yum 更新到最新版本,否则编译(mvn 包)会因某些安全问题而失败。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cloudera 5.4.2:使用 Flume 和 Twitter 流时 Avro 块大小无效或太大 的相关文章

  • 使用具有正斜杠的密钥连接到 s3 接收器时出现无效主机名错误

    我有一个forward slash在 aws 密钥中 当我尝试连接到 s3 接收器时 Caused by java lang IllegalArgumentException Invalid hostname in URI s3 xxxx
  • 如何使用 kafka 模式管理和 Avro 进行重大更改

    使用 avro 进行 kafka 模式管理为我们提供了向后兼容性的灵活性 但是我们如何处理模式中的重大更改 假设生产者A向消费者C发布消息M 假设消息 M 的方案发生了重大变化 例如 名称字段现在分为名字和姓氏 并且我们有新的方案 M Ne
  • 无法创建目录 /home/hadoop/hadoopinfra/hdfs/namenode/current

    我收到错误 Cannot create directory home hadoop hadoopinfra hdfs namenode current 尝试在我的本地 Mac 上安装 hadoop 时 这可能是什么原因 仅供参考 我将我的
  • Avro 架构中嵌套记录的默认值

    这个问题 答案 如何在 Avro 模式中嵌套记录 https stackoverflow com questions 11764287 how to nest records in an avro schema 澄清了如何嵌套复杂类型 在本
  • Kafka Streams - SerializationException:未知的魔术字节

    我正在尝试创建一个处理 Avro 记录的 Kafka Streams 应用程序 但出现以下错误 Exception in thread streams application c8031218 8de9 4d55 a5d0 81c30051
  • 在 python 中使用 snappy 和 avro 时出现问题

    我正在读取 gz 文件并转换为 AVRO 格式 当我使用codec deflate 它运行良好 即 我能够转换为 avro 格式 当我使用codec snappy 它抛出一个错误 说明如下 raise DataFileException U
  • 为什么map任务总是运行在单节点上

    我有一个具有 4 个节点的完全分布式 Hadoop 集群 当我将作业提交给 Jobtracker 时 Jobtracker 认为 12 个映射任务对我的工作来说很酷 但奇怪的事情发生了 这 12 个映射任务始终在单个节点上运行 而不是在整个
  • Apache AVRO 与休息

    我正在评估将 Apache AVRO 用于我的 Jersey REST 服务 我将 Springboot 与 Jersey REST 结合使用 目前我接受 JSON 作为输入 并使用 Jackson 对象映射器将其转换为 Java Pojo
  • 如何将 Jar 文件传递​​到 OOZIE shell 节点中的 shell 脚本

    您好 我在 oozie shell 操作工作流程中执行的脚本中运行 java 程序时遇到以下错误 Stdoutput 2015 08 25 03 36 02 636 INFO pool 1 thread 1 ProcessExecute j
  • 带有 kafka-avro-console-consumer 的未知魔法字节

    我一直在尝试将 Confluence 中的 kafka avro console consumer 连接到我们的旧版 Kafka 集群 该集群是在没有 Confluence Schema Registry 的情况下部署的 我使用以下属性显式
  • Curl下载到HDFS

    我有这个代码 curl o fileName csv url xargs hdfs dfs moveFromLocal 1 somePath 当我执行此代码时 curl 将请求中的值放入 fileName csv 中 该文件将移动到 HDF
  • 在 Mac OS X 中安装 Avro

    我正在查看 Avro RPC for Python 网址为https github com phunt avro rpc quickstart python https github com phunt avro rpc quickstar
  • 连接到 Hive 时使用 Spark 进行 Kinit

    我正在尝试从独立的 Spark 连接到 Hive hadoop 集群具有 kerberos 身份验证 有人可以让我知道如何在 Spark 程序中执行 kinit 我可以连接到配置单元吗 更新 我的 Spark 与 Hadoop 位于不同的集
  • 无法初始化类 io.confluence.kafka.schemaregistry.client.rest.RestService

    我正在尝试使用 KafkaAvroSerialzer 设置一个卡夫卡生产者以获得价值 当 rit 尝试创建生产者时 我遇到了这个错误 我正在使用 confluence 5 2 1 中提供的所有罐子 java lang NoClassDefF
  • 使用 GenericRecord 在 Avro 中填充嵌套记录的问题

    假设我有以下架构 name Profile type record fields name firstName type string name address type type record name AddressUSRecord f
  • Namenode高可用客户端请求

    谁能告诉我 如果我使用java应用程序请求一些文件上传 下载操作到带有Namenode HA设置的HDFS 这个请求首先去哪里 我的意思是客户端如何知道哪个名称节点处于活动状态 如果您提供一些工作流程类型图或详细解释请求步骤 从开始到结束
  • 非 hdfs 文件系统上的 hadoop/yarn 和任务并行化

    我已经实例化了 Hadoop 2 4 1 集群 并且发现运行 MapReduce 应用程序的并行化方式会有所不同 具体取决于输入数据所在的文件系统类型 使用 HDFS MapReduce 作业将生成足够的容器 以最大限度地利用所有可用内存
  • 使用 kafka java api 的 Avro 序列化器和反序列化器

    Kafka Avro 序列化器和反序列化器无法工作 我尝试使用 kafka 控制台消费者消费消息 我可以看到发布的消息 public class AvroProducer
  • Hadoop fs 查找块大小?

    在 Hadoop fs 中如何查找特定文件的块大小 我主要对命令行感兴趣 例如 hadoop fs hdfs fs1 data 但看起来这并不存在 有Java解决方案吗 The fsck其他答案中的命令列出了块并允许您查看块的数量 但是 要
  • Hive:为现有文件夹结构添加分区

    我在 HDFS 中有一个文件夹结构 如下所示 但是 实际上没有使用以下命令在表上创建分区ALTER TABLE ADD PARTITION命令 即使文件夹结构的设置就像表有分区一样 如何自动将所有分区添加到Hive表中 Hive 1 0 外

随机推荐

  • 如何在公共场合创建和使用 Web 服务,但仍限制其仅用于我的应用程序?

    我正在创建一个带有创建 更新 删除调用的网络服务 但现在我想限制在我自己的网络应用程序上使用它 而不是其他客户端 我怎样才能拥有进行这些调用的明文 javascript 代码 但仍然确信凭证不会在其他地方使用 我的想法是为每个请求使用服务器
  • 如何在 C# Winform 中显示组合框中的第一项

    我有一个绑定到列表的组合框 我一直在尝试弄清楚如何在加载列表中的数据之前加载 Please Select 时在组合框中包含第一项 我试过这个 cbUpdate DataSource names cbUpdate Items Insert 0
  • Knockout.js 与 jquery ui datepicker 可以在除 IE 之外的任何地方工作

    我使用 knockout js 模板脚本创建了一个可以复制和删除的表单 小提琴可以找到here 我在 SE 的帮助下编辑了脚本 添加了 jquery ui 日期选择器 小提琴的简短版本可以在 此处 2 找到 到目前为止一切顺利 但在测试时我
  • 使用 GSON 将嵌套对象展平为目标对象

    最亲爱的Stackoverflowers 我想知道是否有人知道如何最好地解决这个问题 我正在与一个返回 json 对象的 api 进行通信 如下所示 field1 value1 field2 value2 details nested1 1
  • 如何在 Linux 上为 Aptana 设置内部浏览器

    我下载了 Aptana Studio Setup Linux zip 包 解压并运行 AptanaStudio 一开始很好 但报告了一个问题 无法创建此编辑器的嵌入式浏览器小部件 它不适用于您的操作系统 或者需要配置系统才能支持嵌入式浏览器
  • 是否可以从不同的布局初始化视图?

    我有一个Activity并与之相关layout 另外我还有另一个layout和一些Views 我想初始化一个变量 TextView 从我的Activity用一个View从那个独立的layout 我总是得到null public void o
  • 如何在 C# 应用程序中使用 Shell32?

    为了使 Shell32 正常工作 我应该在 C 应用程序中包含什么 Edit 我的应用程序无法识别 shell32 我应该包含哪些参考文献或库 我想做的是 Shell32 Shell shell new Shell32 Shell 我收到的
  • 全日历 slotMinutes 不起作用

    我想在我的日历中显示 15 分钟的 slotMinutes 但这不起作用 在这个小提琴上效果很好 document ready function var calendar calendar fullCalendar defaultView
  • Android - 无法获取某些联系人的电话号码

    我在提取联系人列表中某些人的电话号码时遇到问题 首先 我在列表视图中显示所有联系人 String projection new String ContactsContract Contacts ID ContactsContract Com
  • 如何在弹出通知时播放声音?

    我正在开发一个应用程序 用户可以使用两个开关按钮打开 关闭通知和通知声音 我创建了在状态栏上弹出的通知 我想在它们出现时播放默认声音 我编写了以下代码 但它似乎不起作用 关于如何让通知声音播放有什么想法吗 import android an
  • 连接两个 JInternalFrame 实例的 CubicCurve2D

    我一直在尝试找到一种方法 在 Swing 中 连接两个JInternalFrame与一个CubicCurve2D 也称为三次贝塞尔曲线 我想要实现的总体效果是一个类似于雅虎 管道 曲线应从一个内部框架的底部延伸到另一个内部框架的顶部 这里有
  • 如何在任何打开的窗口中获取鼠标下的文本

    我正在做一个C 语言的项目 我想制作一个类似于 Narcis 或 Easylingo 的词典 用户可以使用鼠标 只需在任何应用程序中将光标移动到单词上 然后程序就会检测到该单词并找到该特定单词的含义 我的问题是如何在 Microsoft O
  • 为什么 SetWindowsHookEx 必须与 Windows 消息队列一起使用

    我一直在尝试使用钩子进行一些操作 但我不明白为什么钩子必须与消息队列一起使用 hook SetWindowsHookEx WH KEYBOARD LL KeyboardProc NULL 0 MSG msg while GetMessage
  • 为什么c++标准库不起作用?

    我一直在尝试让我从学校服务器下载的程序在我的 Mac 上离线运行 我尝试按照教程更新 GCC 但由于某种原因 即使我使用了给定的命令 教程也不起作用 现在 当我编译时 我收到一条错误 指出未找到 我不明白 我已经更新了 Xcode 遵循了大
  • Android:画布层上的 UI 元素

    如何在画布上 顶部 设置一些 UI 元素 我有一个简单的触摸游戏 其图形放置在带有画布的自定义视图上 然而 由于我的全屏面板位于 setContentView 中 我无法添加任何 UI 项目 例如进度条或徽标 我希望整个画布层可见 一些对象
  • 让 Hibernate 忽略未映射的实例变量[重复]

    这个问题在这里已经有答案了 我认为 hibernate 仅考虑带有注释的实例变量 Column 但奇怪的是 今天当我添加一个变量 未映射到任何列 只是类中需要的变量 时 它试图将该变量作为列名包含在 select 语句中并引发错误 字段列表
  • 我如何告诉 jaxb / Maven 生成多个模式包?

    Example
  • 在没有目的地的情况下获取 Google 地图上 x 公里后的纬度经度?

    我正在创建一个Android应用程序需要在 X 公里后找到同一条路线上的坐标 我有两个坐标x1 y1 x2 y2在一条路上 现在 我的要求是找到坐标x3 y3大约 3 公里后 即坐标x2 y2不在之间x1 y1 x2 y2 在同一条路上 如
  • 从 one2many 字段创建记录时设置默认值 - odoo

    我想在从 one2many 字段创建记录时为多个字段设置默认值 因为该默认值将从父模型中获取 Odoo 模型结构 class purchase order models Model inherit purchase order cash f
  • Cloudera 5.4.2:使用 Flume 和 Twitter 流时 Avro 块大小无效或太大

    当我尝试 Cloudera 5 4 2 时出现了一个小问题 基于这篇文章 Apache Flume 获取 Twitter 数据http www tutorialspoint com apache flume fetching twitter