Cloudera Impala INVALIDATE METADATA 表列表

Posted

技术标签:

【中文标题】Cloudera Impala INVALIDATE METADATA 表列表【英文标题】:Cloudera Impala INVALIDATE METADATA list of tables 【发布时间】:2021-08-26 06:54:49 【问题描述】:

我正在使用 pandas 和 pyodbc 从 CDH6 Impala 中提取数据。这些表每天都被摄取,每隔一天我需要进入并手动使几个表上的元数据无效。我一直在尝试使用 Python 自动执行此操作,以让代码遍历列表中的每个表。但是由于我们使用语句检索 None 类型的对象,所以迭代不起作用。

有什么想法吗?

import pyodbc
import pandas as pd

connString = 'connection string'

tables = ["INVALIDATE METADATA master.table1", "INVALIDATE METADATA master.table2" etc]

for t in tables:
    if tables != None:
        try:
            pd.read_sql_query(tables, con=pyodbc.connect(connString, autocommit=True))
        except:
            print('Unsuccessful')
    else:
        if tables is None:
            pd.read_sql_query(tables, con=pyodbc.connect(connString, autocommit=True))
            print('Success with none')

【问题讨论】:

【参考方案1】:

我认为您可以轻松地自动执行此操作。我更喜欢使用 pyodbc。

    首先使用show tables in schema获取表列表。 遍历列表,创建无效元数据语句并发出它。
import pyodbc

connp = pyodbc.connect(conn_string, autocommit=True)
cursor = connp.cursor()
#Create SQL to fetch all tables from schema_xx. You can use argument instead of schema_xx too.
sql = "show tables in schema_xx"  
cursor.execute(sql)

for row in cursor.fetchall():
      #Create and execute invalidate metadata statement one by one
      sql ="INVALIDATE METADATA schema_xx."+row[0]
      cursor.execute(sql)

connp.close()

【讨论】:

【参考方案2】:

您不需要对所有表进行迭代。对于当前模式; “使元数据无效”语句使该架构上所有表的元数据无效。

【讨论】:

以上是关于Cloudera Impala INVALIDATE METADATA 表列表的主要内容,如果未能解决你的问题,请参考以下文章

安装 Impala 是不是需要 Cloudera Navigator Key Trustee Server、Cloudera Navigator Key HSM、Cloudera Navigator

Cloudera impala 支持 mongodb 吗?

上海Cloudera 数据分析师培训:PigHive和 Impala

Impala ODBC 安装笔记

cloudera impala 中的多个查询执行

在 mac os x 上安装 cloudera impala shell 并连接到 impala 集群