当前位置: 首页 > 知识库问答 >
问题:

Protobuf3与蜂巢和象鸟的应用

金亦
2023-03-14

我有一个将protobuf写入HDFS的数据管道,现在我需要一种查询该数据的方法。我偶然发现了象鸟和蜂巢,并一直在努力使这个解决方案运行了一天。

3.)启动hive并添加core、hive和hadoop-compat jar

4.)为.proto文件生成java类;用protobuf-java-3.0.0.jar封装并添加到hive中

5.)将protobuf-java-3.0.0.jar添加到hive中

create external table tracks
    row format serde 
        "com.twitter.elephantbird.hive.serde.ProtobufDeserializer"
    with serdeproperties (
        "serialization.class"="protobuf.TracksProtos$Env")
    stored as
        inputformat "com.twitter.elephantbird.mapred.input.DeprecatedRawMultiInputFormat"
        OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
    LOCATION '/tracks/';
2017-10-26T17:36:30,838 ERROR [main] util.Protobufs: Error invoking method getDescriptor in class class protobuf.TracksProtos$Env
java.lang.reflect.InvocationTargetException
.....
.....
.....
Caused by: java.lang.NoSuchMethodError: com.google.protobuf.Descriptors$Descriptor.getOneofs()Ljava/util/List;

想法?

共有1个答案

梁巴英
2023-03-14

我可以通过下载配置单元源代码并使用以下命令进行编译来解决此问题:

mvn -Dprotobuf.version=3.0.0 -Pdist clean package

这使得我可以将Hive与Protobuf3.0.0一起使用。然后,我需要根据新安装的Hive重新编译elephant-bird。

 类似资料:
  • null 和我的流协议缓冲区java教程创建我的数据“测试本”。 而我 使用创建HDFS文件夹。

  • 蜂巢平台(OpenComb Platform)是一个基于 PHP 5.3 实现的深度云计算应用框架。蜂巢采用了扩展模式,系统中的功能和特性,都由扩展提供。 因此,用户可以通过开发和安装扩展来部署各种类型的互联网应用。

  • 我正在执行一个HQL查询,该查询几乎没有连接、联合和插入覆盖操作,如果只运行一次,它就可以正常工作。 如果我第二次执行相同的作业,我就会面临这个问题。有人能帮我确定在哪种情况下我们会得到这个异常吗?

  • 我正在尝试连接到R中的hive。我已经在我的R环境中加载了RJDBC和rJava库。我使用的是一台Linux服务器,hadoop(hortonworks sandbox 2.1)和R(3.1.1)安装在同一个盒子中。这是我用来连接的脚本: 我得到了这个错误: 错误。jcall(drv@jdrv,“Ljava/sql/Connection;”,“连接”,如图所示。字符(url)[1],:java。l

  • 在配置单元中执行select语句时,我得到了一个错误。