在 Impala 中将非 Kudu 转换为 Kudu 表
Posted
技术标签:
【中文标题】在 Impala 中将非 Kudu 转换为 Kudu 表【英文标题】:Turn non-Kudu to Kudu table in Impala 【发布时间】:2019-05-17 09:00:01 【问题描述】:当我使用下面的代码时遇到 impala update statement
的问题
update john_estares_db.tempdbhue set QU=concat(account_id,"Q",quarter(mrs_change_date)," ",year(mrs_change_date));
返回错误信息:
AnalysisException: Impala does not support modifying a non-Kudu table: john_estares_db.tempdbhue
我想知道我是否可以将我的非 Kudu 表更改为 Kudu 表,或者是否可以在 Impala 中为非 Kudu 替换 update statement
。 TIA
【问题讨论】:
【参考方案1】:Apache Kudu 是一种数据存储(将其视为 HDFS/S3 的替代方案,但仅存储结构化数据),它允许基于主键进行更新。这与 Impala 有很好的集成。 Imapla 上的 kudu 表是一种查询存储在 Kudu 上的数据的方法。
简而言之,如果您尚未安装和设置 Kudu,则无法在 Impala 上创建 kudu 表。
如果您安装并设置了 Kudu,那么您不能简单地转换表 kudu 表。您必须创建一个具有类似结构的新 kudu 表,其中包含一些主键列(Kudu 需要所有表的主键)并使用 sql 查询 insert into .. select * from ...
从旧的非 kudu 表中插入数据。
【讨论】:
感谢您的帮助,但insert into .. select * from ....
的问题是它添加了行而不是列【参考方案2】:
john_estares_db.tempdbhue
的表类型是什么?
不支持 Hive 或其他表类型、更新或 upsert。
您可以使用show create table
检查您的表格类型。
show create table
如果您安装了 kudu,您可以创建一个 kudu 表,并将您的数据移动到 kudu 表中,然后您可以使用您的更新代码。
【讨论】:
以上是关于在 Impala 中将非 Kudu 转换为 Kudu 表的主要内容,如果未能解决你的问题,请参考以下文章
0002-CENTOS7.2安装CDH5.10和Kudu1.2