将 Impala 命令迁移到 Hive

Posted

技术标签:

【中文标题】将 Impala 命令迁移到 Hive【英文标题】:Migrate Impala commands to Hive 【发布时间】:2021-07-19 07:51:59 【问题描述】:

我必须将一些 Impala shell 命令迁移到 Hive。它们是非常简单的命令,但我对它们有点迷茫,因为我知道它们每个的作用,但我不知道它们在 Hive 中的等效形式。

TABLE=$(impala-shell -i $server --delimited --quiet -q "select concat(db_normalized,'.',tb_normalized) from parametric_table where source='testSource' and product='testProduct' limit 1" 2>/dev/null)

nohup impala-shell -i $server -q "REFRESH $TABLE;" >> $logsPath/impalaRefresh.out &

第一个命令是根据一些参数从参数表中获取数据库名称和表名,然后在第二个命令中使用这些参数在其上运行REFRESH

对不起,如果这是一个非常简单的任务,但我是 Impala 和 Hive 的新手。

【问题讨论】:

【参考方案1】:

REFRESH TABLE 是 Impala 特有的命令:Impala 缓存表元数据,在 Hive 加载或更改表后,您需要在 Impala 中运行 Refresh,Hive 没有这样的命令,所以如果您正在迁移到 Hive,并且会不使用 Impala,只需删除这些命令。

如果您通过 Hive 以外的其他方式加载分区文件夹,那么您可能需要运行 MSCK REPAIR TABLEALTER TABLE RECOVER PARTITIONS(如果在 AWS EMR 上)。您可能还想使用 ANALYZE TABLE ... COMPUTE STATISTICS 收集 Hive 表统计信息

Also Hive 3 is caching results and metadata。但是你只能打开/关闭它,不能刷新特定的表。

【讨论】:

我认为,analyze table 必须使用,因为它看起来像结构或它的删除/创建或新表这样的表上发生了一些变化。

以上是关于将 Impala 命令迁移到 Hive的主要内容,如果未能解决你的问题,请参考以下文章

使用SparkSQL迁移oracle数据到impala创建的kudu表中,出现Primary key column riskcode is not set错误

使用SparkSQL迁移oracle数据到impala创建的kudu表中,出现Primary key column riskcode is not set错误

使用 Sqoop 将视图(数据库表重)从 Oracle 迁移到 Hive

如何把mariadb迁移到mysql

从 Hive Map 迁移到 Snowflake Variant

如何将 hive derby 元存储迁移到 postgres 元存储