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