如何将数据加载到 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 中也可访问的主要内容,如果未能解决你的问题,请参考以下文章
如何让信息按钮出现并使其在 jquery mobile 或 javascript 中起作用
如何创建 ElasticSearch 类型并使其在索引中可搜索
如何捕获 UITableView / UIScrollView 的完整内容的 UIImage 并使其在 ios 设备上工作