hive没有从外部表中以ORC格式返回值。

问题描述 投票:1回答:1

我试图从Hive上的一个外部表中检索数据。我使用基于Cloudera官方镜像clouderaquickstart镜像的docker容器来做这件事。

这个表。

create external table dev.tru_sprinklr_rpt_platform_inbound_case (
universal_message_id    STRING  COMMENT 'Id unico na mensagem', 
inbound_message_date    STRING  COMMENT 'Data no formato Unix Timestamp', 
message                 STRING  COMMENT 'Mensagem escrita na Rede Social', 
permalink               STRING  COMMENT 'URL que aponta para uma postagem específica na Rede Social', 
social_network          STRING  COMMENT 'Nome da Rede Social', 
associated_cases        STRING  COMMENT 'Id de mensagens associados ao caso (gerado automaticamente pela Sprinklr no periodo de 24 horas)',
from_user               STRING  COMMENT 'Usuario', 
sentiment               STRING  COMMENT 'Sentimento', 
assunto_gestor          STRING  COMMENT 'Categoria gerada na plataforma Sprinklr pelos atendentes de midia sociais com assunto do caso', 
detalhamento            STRING  COMMENT 'Categoria gerada na plataforma Sprinklr pelos atendentes de midia sociais com detalhamento do caso', 
motivo_engajamento      STRING  COMMENT 'Categoria gerada na plataforma Sprinklr pelos atendentes de midia sociais com motivo e engajamento do caso', 
has_brand_responded     STRING  COMMENT 'Mensagem teve uma resposta', 
sender_id               STRING  COMMENT 'Id do usuario que esta enviando a mensagem', 
sender_name             STRING  COMMENT 'Login do usuario que esta enviando a mensagem', 
sender_screenname       STRING  COMMENT 'Nome do usuario que esta enviando a mensagem', 
sender_location         STRING  COMMENT 'Localizacao do usuario que esta enviando a mensagem',
sender_url_profile      STRING  COMMENT 'URL do perfil do usuario que esta enviando a mensagem', 
sender_following        STRING  COMMENT 'Quantidade de seguintes do usuario que esta enviando a mensagem', 
sender_followers        STRING  COMMENT 'Quantidade de seguidores do usuario que esta enviando a mensagem', 
receiver_id             STRING  COMMENT 'Id do usuario que esta recebendo a mensagem', 
receiver_name           STRING  COMMENT 'Nome do usuario que esta recebendo a mensagem'
) stored as orc
location '/user/next/dev/sprinklr/external'
tblproperties ("orc.compress"="ZLIB");

Hive的版本: Hive 1.1.0-cdh5.7.0

我用Spark 1.6(因为和我合作的公司)把orc文件写在 "location "里。文件就在那里,而且有正确的内容。我知道这一点,因为我可以使用Spark在Dataframe上读取内容。

然而,当我使用一个简单的查询(SELECT * FROM )时,结果是这样的。

$ hive -e "select * from dev.tru_sprinklr_rpt_platform_inbound_case"
2020-05-12 18:13:10,235 WARN  [main] mapreduce.TableMapReduceUtil: The hbase-prefix-tree 
module jar containing PrefixTreeCodec is not present.  Continuing without it.

Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j.properties
OK
Time taken: 1.134 seconds
WARN: The method class org.apache.commons.logging.impl.SLF4JLogFactory#release() was invoked.
WARN: Please see http://www.slf4j.org/codes.html#release for an explanation

正如你所看到的,即使在HDFS的正确路径上有orc文件(实际上是目录),也没有返回任何内容。

我尝试使用这个命令,希望只是Hive需要更新元数据。 MSCK REPAIR TABLE dev.tru_sprinklr_rpt_platform_inbound_case.

但是,什么都没有改变!

我试着在创建表之前加入这一行,但是,也没有任何改变! ADD JAR jarshive-orc-2.2.0.jar。

我读过类似的问题,但没有一个答案对我有用。

请问有什么建议吗?

谢谢

hive zlib orc external-tables
1个回答
0
投票

你的查询看起来很好的读取数据,但可能是因为错误的列顺序或错误的数据类型,你的数据不读取数据和空白的到来。

我也遇到过类似的问题,那就是因为列序错误。这很奇怪,因为 ORC纳入模式细节.


0
投票

这是提示性的数据文件错误,可能是文件的格式不对,或者是某些字段的格式不对,或者更好的说是表结构和数据之间存在差异或不一致。请尝试检查一下数据文件,Hive中有一个工具可以检查orc文件。

作为一个例子,你可以看到这个链接。

在HDFS上,我想显示一个以ORC格式存储的hive表的正常文本。

还有Hive的文档。

https:/cwiki.apache.orgconfluencedisplayHiveLanguageManual+ORC#LanguageManualORC-ORCFileDumpUtility。

© www.soinside.com 2019 - 2024. All rights reserved.