Hive 配置单元未以ORC格式从外部表返回值

Hive 配置单元未以ORC格式从外部表返回值,hive,zlib,orc,external-tables,Hive,Zlib,Orc,External Tables,我正在尝试从配置单元上的外部表检索数据。我使用一个基于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

我正在尝试从配置单元上的外部表检索数据。我使用一个基于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(因为我所在的公司)在“位置”中编写orc文件。文件就在那里,并且具有正确的内容。我知道这一点,因为我可以使用Spark读取数据帧上的内容

但是,当我使用一个简单的查询(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维修表开发tru喷淋器rpt平台入站案例

但一切都没有改变

我试图在创建表之前包含这一行,但没有任何更改! 添加JAR/jars/hive-orc-2.2.0.JAR

我读过类似的问题,但没有一个答案适合我

有什么建议吗


谢谢

您的查询读取数据看起来不错,但可能是因为列顺序错误或数据类型错误,导致您的数据未读取数据且出现空白


我也遇到过类似的问题,那是因为错误的列顺序。这很奇怪,因为。

您的查询读取数据看起来不错,但可能是因为列顺序错误或数据类型错误,您的数据没有读取数据而出现空白


我也遇到过类似的问题,那是因为错误的列顺序。这很奇怪,因为。

这通常是一个数据文件错误,可能文件的格式不正确,或者某些字段的格式不正确,或者更好地说,表结构和数据之间存在差异或不一致。请尝试签出数据文件,配置单元中有一个用于检查orc文件的实用程序

例如,您可以看到以下链接:

以及配置单元文档:


这通常是一个数据文件错误,可能是文件格式不正确,或者某些字段格式不正确,或者更好的说法是表结构和数据之间存在差异或不一致。请尝试签出数据文件,配置单元中有一个用于检查orc文件的实用程序

例如,您可以看到以下链接:

以及配置单元文档:


我使用命令<;代码>;hive-orcfiledump-d/user/next/dev/sprinkr/external/sprinkr-FUMwM2tzTb.orc/part-r-00000-a5086502-4548-4469-8741-5c6b505e41.orc与命令的结果进行比较
显示创建表
。它们在列顺序和数据类型方面是相同的(所有字段都是字符串类型)。我将表修改为只有一列(universal_message_id)。同样的结果!配置单元无法识别ORC文件内容。@AndreCarneiro在
表创建
命令中将
/user/next/dev/sprinkr/external/sprinkr-FUMwM2tzTb.ORC/
指定为
位置
。您完全正确!我也明白了!我完全忘记了spark用部分而不是文件保存一个目录,除非您使用合并,否则我不想这样做。无论如何谢谢你!我使用命令<;code>hive--orcfiledump-d/user/next/dev/sprinkr/external/sprinkr-FUMwM2tzTb.orc/part-r-00000-a5086502-4548-4469-8741-5c6b505e4e61.orc与命令的结果进行比较
show create table
。它们在列顺序和数据类型方面是相同的(所有字段都是字符串类型)。我将表修改为只有一列(universal_message_id)。同样的结果!配置单元无法识别ORC文件内容。@AndreCarneiro在
表创建
命令中将
/user/next/dev/sprinkr/external/sprinkr-FUMwM2tzTb.ORC/
指定为
位置
。您完全正确!我也明白了!我完全忘记了spark用部分而不是文件保存一个目录,除非您使用合并,否则我不想这样做。无论如何谢谢你!我用了你建议的实用工具。我并没有看到表和orc文件之间有什么不同,包括列名、顺序和类型。我修改了表,使其只有一列(universal\u message\u id)。同样的结果!蜂巢无法识别ORC文件内容。是的!这很奇怪,因为我使用的是cloudera quickstart虚拟机,orc文件运行良好。我搞不懂发生了什么事。解决问题!Spark正在保存包含部分文件的目录。我忘了这个!我用了你建议的实用工具。我并没有看到表和orc文件之间有什么不同,包括列名、顺序和类型。我修改了表,使其只有一列(universal\u message\u id)。同样的结果!蜂巢无法识别ORC文件内容。是的!这很奇怪,因为我使用的是cloudera quickstart虚拟机,orc文件运行良好。我搞不懂发生了什么事。解决问题!Spark正在保存包含部分文件的目录。我忘了这个!