将 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 TABLE
或 ALTER 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