hive没有以orc格式从外部表返回值

o2gm4chl  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(478)

我正在尝试从配置单元上的外部表检索数据。我使用一个基于cloudera/quickstart图像的docker容器来实现这一点,这是cloudera的官方图像。
表格:

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");

配置单元版本:配置单元1.1.0-cdh5.7.0
我正在使用spark 1.6(因为我所在的公司)在“location”中编写orc文件。文件就在那里并且有正确的内容。我知道这一点,因为我可以使用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

如您所见,即使orc文件(实际上是目录)在hdfs的正确路径中,也不会返回任何内容。
我尝试使用这个命令,希望只是需要更新元数据的配置单元:msck repair table dev.tru\u sprinkler\u rpt\u platform\u inbound\u case
但一切都没变!
我试图在create表之前包含这一行,但是没有任何改变!添加jar/jars/hive-orc-2.2.0.jar;
我读过类似的问题,但没有一个答案适合我。
有什么建议吗?
谢谢!

cbwuti44

cbwuti441#

您的查询在读取数据时看起来不错,但可能是因为列顺序错误或数据类型错误,您的数据没有读取数据而出现空白。
我也遇到过类似的问题,那是因为错误的列顺序。这很奇怪,因为orc包含了模式细节。

rqqzpn5f

rqqzpn5f2#

这通常是一个数据文件错误,可能文件没有正确的格式,或者某些字段没有正确的格式,或者更好地说,表结构和数据之间存在差异或不一致。请尝试 checkout 数据文件,配置单元中有一个用于检查orc文件的实用程序。
例如,您可以看到以下链接:
在hdfs上,我想显示以orc格式存储的配置单元表的普通文本
以及hive文档:
https://cwiki.apache.org/confluence/display/hive/languagemanual+orc#languagemanualorc-orcfiledumputility

相关问题