如何将数据加载到 Hive 表并使其在 Impala 中也可访问

Posted

技术标签:

【中文标题】如何将数据加载到 Hive 表并使其在 Impala 中也可访问【英文标题】:How to load data to Hive table and make it also accessible in Impala 【发布时间】:2018-12-03 00:55:25 【问题描述】:

我在 Hive 中有一张桌子:

CREATE EXTERNAL TABLE sr2015(
creation_date STRING,
status STRING,
first_3_chars_of_postal_code STRING,
intersection_street_1 STRING,
intersection_street_2 STRING,
ward STRING,
service_request_type STRING,
division STRING,
section STRING )
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES (
'colelction.delim'='\u0002',
'field.delim'=',',
'mapkey.delim'='\u0003',
'serialization.format'=',', 'skip.header.line.count'='1',
'quoteChar'= "\"")

表格是这样加载数据的:

LOAD DATA INPATH "hdfs:///user/rxie/SR2015.csv" INTO TABLE sr2015;

为什么只能在 Hive 中访问该表?当我尝试在 HUE/Impala 编辑器中访问它时,出现以下错误:

AnalysisException:无法解析表引用:'sr2015'

这似乎是说没有这样的表格,但表格确实出现在左侧面板中。

在 Impala-shell 中,错误如下:

错误:AnalysisException:无法加载表的元数据:'sr2015' 原因:TableLoadingException:无法加载表的元数据: sr2015 原因:InvalidStorageDescriptorException:Impala 没有 支持这种类型的表。原因:SerDe 库 不支持“org.apache.hadoop.hive.serde2.OpenCSVSerde”。

我一直认为 Hive 表和 Impala 表本质上是一样的,区别在于 Impala 是一个更高效的查询引擎。

谁能帮忙解决?非常感谢。

【问题讨论】:

【参考方案1】:

假设sr2015 位于名为db 的数据库中,为了使表在Impala 中可见,您需要发出

使元数据数据库无效;

使元数据 db.sr2015 无效;

在 Impala 外壳中

但是在您的情况下,原因可能是您使用的 Impala 版本,因为它完全不支持表格格式

【讨论】:

谢谢。无效元数据不会产生神奇的相同错误消息。 SerDe 库 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 即使在较新版本的 Impala v3.4.0 中也不受支持。

以上是关于如何将数据加载到 Hive 表并使其在 Impala 中也可访问的主要内容,如果未能解决你的问题,请参考以下文章

如何在服务器上部署Django项目并使其在后台一直运行

如何让信息按钮出现并使其在 jquery mobile 或 javascript 中起作用

如何创建 ElasticSearch 类型并使其在索引中可搜索

如何添加视频元素并使其在启用声音的情况下自动播放

如何捕获 UITableView / UIScrollView 的完整内容的 UIImage 并使其在 ios 设备上工作

如何在 Gitlab CI 中设置环境变量并使其在本地可测试