根据 Application ID找到 Hive 的 SQL 语句

根据 Yarn 的 Application 找到 Hive 的 SQL,需要根据执行引擎(tez 或者 mr)的不同有不同的方法。以下以 TEZ 引擎 为例。

1. 通过界面

找到 Application

点击 Tracking URL 后面的链接,当运行的时候是 “ApplicationMaster”。当运行结束后是 “History”

 进入 Application 界面,如下图所示。

 点击 [DAGs],一个 Appcation 可能运行多个 DAG,一个SQL 运行生成一个 DAG。

点击对应的 DAG,进入下面的界面

​ 

 点击【Download data】,下载一个 zip 文件,点击解压此文件。

 进入目录【dag_1655120277783_0036_1】,如下图所示。

打开文件【dag-extra-info.json】,搜索 【description】,找到dagPlan/dagContext/description,就是执行的SQL。由于'换行符'替换为 \n,如果执行此SQL,需要把 \n 换为'换行符' 或者空格。

2. 通过 timeline-server api

假设 timeline server 监听 172.23.233.232 8188 端口

那么假设 application id 是 application_1660210417920_0001。首先根据 application id 找到对应的 dag id,然后第2步根据 dag id 查找dag 的详细信息,详细信息里包含 SQL。

2.1 根据 application 找到对应的 dag id

http://172.23.233.232:8188/ws/v1/timeline/TEZ_APPLICATION/tez_application_1660210417920_0001

根据 TEZ_DAG_ID 找到后面的 dag id。

{"TEZ_DAG_ID":["dag_1660210417920_0001_1"]}

2.2 根据 dag id 请求 dag 的详细信息

http://172.23.233.232:8188/ws/v1/timeline/TEZ_DAG_EXTRA_INFO/dag_1660210417920_0001_1

搜索 description 找到对应的SQL

"description":"select c1,count(1) cnt from t1 group by c1"

### 使用 Python 和 GLM 模型生成 SQL 查询语句 为了实现通过 Python 调用 GLM 模型并生成 SQL 查询语句的功能,需要完成以下几个方面的设计: #### 1. 安装必要的依赖项 首先,确保安装了支持 GLM 的相关库以及用于 HTTP 请求的 `requests` 库。 ```bash pip install transformers requests torch ``` 这些库提供了加载预训练模型的能力,并允许与远程 API 或本地运行的服务交互。 --- #### 2. 加载 GLM 模型或连接到其服务端 如果使用的是本地部署的 GLM 模型,则可以通过 Hugging Face Transformers 库加载它。如果是云端服务,则需调用对应的 RESTful 接口[^1]。 以下是基于 RESTful API 的示例代码: ```python import json import requests def glm_generate_sql(prompt, api_url="http://your-glm-api-endpoint", max_length=50): """ 使用 GLM 模型生成 SQL 查询。 参数: prompt (str): 用户输入的自然语言查询。 api_url (str): GLM 模型的 API 地址。 max_length (int): 输出的最大长度。 返回: str: 由 GLM 模型生成的 SQL 查询。 """ headers = {"Content-Type": "application/json"} data = { "prompt": prompt, "max_length": max_length, "top_k": 50, "temperature": 0.7 } response = requests.post(api_url, headers=headers, data=json.dumps(data)) if response.status_code == 200: result = response.json() return result["output"] # 假设返回的结果字段名为 'output' else: raise Exception(f"请求失败,状态码 {response.status_code}") ``` 此函数发送了一个 POST 请求至指定的 GLM API 端点,并附带了用户提供的自然语言问题作为输入[^3]。 --- #### 3. 提供数据库模式信息 为了让 GLM 更好地理解上下文环境,应向模型提供目标数据库的表结构信息(即 `db_schema`)。这一步骤对于提高生成 SQL 的准确性至关重要[^2]。 假设有一个简单的数据库模式如下所示: ```plaintext CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100), department_id INT, salary DECIMAL(10, 2) ); CREATE TABLE departments ( id INT PRIMARY KEY, name VARCHAR(100) ); ``` 可以将其转换为字符串形式并与用户的自然语言问题一起传递给 GLM 模型。 --- #### 4. 整合流程 下面是一个完整的例子,展示如何从头到尾执行整个过程: ```python if __name__ == "__main__": user_input = "找出工资最高的员工及其所在部门名称" db_schema = """employees(id INT, name VARCHAR, department_id INT, salary DECIMAL), departments(id INT, name VARCHAR)""" combined_prompt = f"{db_schema}\n{user_input}" # 合并数据库模式和用户问题 try: sql_query = glm_generate_sql(combined_prompt) print("生成的 SQL:", sql_query) except Exception as e: print("错误:", str(e)) ``` 上述脚本会打印出由 GLM 模型生成的 SQL 查询语句[^4]。 --- ### 注意事项 - 如果计划扩展功能以适应更多类型的数据库操作(如 MySQLHive),则可能需要调整 Prompt 工程策略,使其更贴近具体场景需求。 - 对于复杂的多步逻辑,建议逐步拆解任务并通过多次调用来完善最终结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值