Hive儲存過程HQL/SQL(二)– 在Hive儲存過程中讀寫MySQL表
關鍵字:Hive儲存過程、PL/HQL、HQL/SQL、MySQL
通過PL/HQL可以在一個指令碼中同時訪問多個數據庫系統。在實際業務場景中,經常會有需要將Hive和RDBMS中的資料結合分析,比如:
- 往RDBMS中寫入Hive分析的審計資訊;
- 從RDBMS中獲取一些維表的資料,和Hive表進行關聯;
- 從RDBMS中讀取一些配置資料;
- 往RDBMS中儲存Hive的分析結果;
在PL/HQL中提供了這個功能,它允許在一個PL/HQL指令碼中訪問多個數據庫系統。下面以一個簡單需求為例:
在PL/HQL指令碼中執行Hive分析任務,並將本次執行的審計資訊記錄到MySQL,其中,審計資訊包括Hive分析任務的開始時間,結束時間和最終完成狀態。
MySQL中建立審計資訊表
- CREATE TABLE hive_task_log (
- seq INT PRIMARY KEY auto_increment,
- start_time VARCHAR(20),
- end_time VARCHAR(20),
- return_code INT
- );
配置hplsql-site.xml
在hplsql-site.xml中的主要配置如下:
<property>
<name>hplsql.conn.default</name>
<value>hive2conn</value>
<description>The default connection profile</description>
</property>
<property>
<name>hplsql.conn.hive2conn</name>
<value>org.apache.hive.jdbc.HiveDriver;jdbc:hive2://172.16.212.17:10000/liuxiaowen;liuxiaowen;</value>
<description>HiveServer2 JDBC connection</description>
</property>
<property>
<name>hplsql.conn.mysql.conn
<value>com.mysql.jdbc.Driver;jdbc:mysql://172.16.212.102:3306/test;test;test1234</value>
<description>MySQL connection</description>
</property>
其中,
引數hplsql.conn.default表示預設的聯結器為hive2conn;
引數hplsql.conn.hive2conn表示hive2conn的具體連結串;
引數hplsql.conn.mysql.conn表示mysql的具體連結串。
特別注意:原始的hplsql-site.xml給出的是hplsql.conn.mysqlconn,經過測試有bug,這裡的連結名稱中必須包含”mysql.”,才會被正確解析成MYSQL的連結型別,否則,全被解析成HIVE,其他非Hive的資料庫連結名稱也是如此。
開發PL/HQL指令碼
PL/HQL指令碼1.sql中的內容如下:
- MAP OBJECT log TO test.hive_task_log AT mysql.conn;
- DECLARE
- start_time VARCHAR(20);
- end_time VARCHAR(20);
- return_code INT;
- BEGIN
- start_time = SYSDATE ||'';
- SELECT COUNT(1) FROM liuxiaowen.lxw1234;
- return_code = SQLCODE;
- end_time = SYSDATE ||'';
- INSERT INTO log (`start_time`,`end_time`,`return_code`)
- VALUES(start_time,end_time,return_code);
- EXCEPTION WHEN OTHERS THEN
- return_code = SQLCODE;
- end_time = SYSDATE ||'';
- INSERT INTO log (`start_time`,`end_time`,`return_code`)
- VALUES(start_time,end_time,return_code);
- DBMS_OUTPUT.PUT_LINE('SQL execute error,return code : '|| return_code);
- END
其中:
MAP OBJECT log TO test.hive_task_log AT mysql.conn;
這句是使用mysql.conn連結器,將test.hive_task_log表對映到log物件上,後面直接使用log即可。
SELECT COUNT(1) FROM liuxiaowen.lxw1234;
這句是執行Hive的分析任務。
return_code = SQLCODE;
這句是獲取Hive分析任務的結果狀態碼,0表示正常,非0表示錯誤;
另外,在Hive分析任務開始前和結束後,使用SYSDATE獲取當前時間。
使用PL/HQL的異常處理,當執行有問題時候,同樣需要往審計表中記錄開始和結束時間,以及返回的錯誤碼。
執行PL/HQL並檢視結果
在命令列執行hplsql -f 1.sql
從執行的列印資訊中可以看出,本次執行有兩個資料庫連結,第一個是連結到Hive,第二個是連結到MySQL。
在MySQL中查看錶test.hive_task_log的資料:
修改1.sql檔案,使Hive的分析任務出錯:
SELECT COUNT(1) FROM liuxiaowen.lxw1234.com;
再執行一遍:
已經報錯了,檢視MySQL中的審計資訊:
遺憾的是,目前還不支援直接將Hive中的表和MySQL中的表關聯起來查詢,只能通過類似遊標的方式去實現關聯。
更多關於Hive中使用儲存過程的文章,閱讀《Hive儲存過程系列文章》。
您可以關注 lxw的大資料田地 ,或者 加入郵件列表 ,隨時接收部落格更新的通知郵件。
如果覺得本部落格對您有幫助,請 贊助作者 。
喜歡 (4)相關推薦
Hive儲存過程HQL/SQL(二)– 在Hive儲存過程中讀寫MySQL表
關鍵字:Hive儲存過程、PL/HQL、HQL/SQL、MySQL 通過PL/HQL可以在一個指令碼中同時訪問多個數據庫系統。在實際業務場景中,經常會有需要將Hive和RDBMS中的資料結合分析,比如: 往RDBMS中寫入Hive分析的審計資訊;從RDBMS中獲取一些維
MS Office 自動化程式設計(二)---Word文件的讀寫
示例一:儲存至Word 經過一些瞭解之後,就不需要每次都將所有的介面匯入工程了。可以根據需要匯入,此次匯入的介面為: Application、_Document、Documents、Range。新建基於對話方塊的MFC工程,引入標頭檔案,關鍵程式碼如下: void CWor
【學亮開講】Oracle儲存過程教學筆記(二)20181116
--帶出參的儲存過程的建立和呼叫 create or replace procedure pro_owners_add1 ( v_name varchar2,--名稱 v_addressid number,--地址編號 v_housenumber varchar2,--門牌號 v_wat
一步一步學Linq to sql(五):儲存過程
導讀: 普通儲存過程 首先在查詢分析器執行下面的程式碼來建立一個儲存過程: createprocsp_singleresultset as setnocounton select*fromcustomers 然後開啟IDE的伺服器
Hive學習之路 (二)Hive安裝
different 0.10 director lar blog cut cti mysql extend Hive的下載 下載地址http://mirrors.hust.edu.cn/apache/ 選擇合適的Hive版本進行下載,進到stable-2文件夾可以看到穩
pl/sql(二) 流程控制語句
sql 員工 if else語句 tor 打印 job cto else語句 type 相當於java中的if else語句 IF 布爾表達式 THENPL/SQL 和 SQL 語句;END IF; IF 布爾表達式 THENPL/SQL 和 SQL 語句;ELSE其它
(二)Hive安裝
(二)Hive安裝 目錄 Hive的下載 Hive的安裝 1、本人使用MySQL做為Hive的元資料庫,所以先安裝MySQL。 2、上傳Hive安裝包 3、解壓安裝包 4、修改配置檔案 5、 一定要記得加入 MySQ
資料庫知識整理 - 關係資料庫標準語言SQL(二)- 超良心的資料查詢整理!
主要內容 資料查詢 基本語法 單表查詢 1. 選擇表中的若干列 2. 選擇表中的若干元組 3. ORDER BY子句 4. 聚集函式 5. GROUP BY子句 連線查詢 1. 等值與非等值連線查詢 2. 自身連線 3. 外
opencv讀取影象畫素值讀取並儲存到txt檔案(二)灰度圖
#include "stdafx.h" #include"cv.h" #include <stdlib.h> #include <stdio.h> #include <math.h> #include <fstream> #include &l
線性表(二)——順序儲存結構
線性表的順序儲存結構 構造原理 用一組地址連續的儲存單元依次儲存線性表的資料元素,資料元素之間的邏輯關係通過資料元素的儲存位置直接反映。 記做 ( a1,a2,a3,… … , an ) 所謂一個元素的地址是指該元素佔用的若干(連續的)儲存單元的第一個單元的地址。記做LOC(a
UI(二)之正式過程
2018-12-04 09:48:25 1.SetWindowsHookEx ·鉤子實際上是一個處理訊息的程式段,通過系統呼叫,把它掛入系統。每當特定的訊息發出,在沒有到達目的視窗前,鉤子程式就先捕獲該訊息,亦即鉤子函式先得到控制權。這時鉤子函式即可以加工處理(改變)該訊息,也可以不作處理而繼續傳遞該訊
View的工作原理之Measure過程原始碼學習(二)
上一篇文章從Android程式啟動過程講解了Activity、PhoneWindow以及ViewRoot與DecorView的聯絡。本篇文章詳細講述一下DecorView的measure過程。
有限元剛度矩陣的一維變頻寬儲存用C++實現(二)
我們接著上一篇有限元剛度矩陣的一維變頻寬儲存用C++實現(一)介紹。上一篇中,我們得到了輔助陣列pDiag中儲存的是總體剛度矩陣[K]每行的半頻寬。經過上一篇中節點自由度重編號,總剛矩陣[K]形式為: 此時,所有的非零元素都集中在帶內。 一
Hive程式設計指南-學習筆記(二) 資料定義
一、資料庫 1、建立資料庫:CREATE DATABASE hive; 如果已經存在,會丟擲異常,下面的語句不丟擲異常:CREATE DATABASE IF NOT EXISTS hive; 資料庫的預設位置是hdfs上:/user/hive/warehouse,修改預
node js10更新後node-sass不相容問題過程以及解決(二)
上次成功之後,重啟了下專案發現又不行了: 這次連提示都模稜兩可,想了想很可能是之前配置的其他資料影響了新配置的sass,於是直接刪除node modules 1 npm install rimraf -g 2 rimraf node_modules 看了下專案檔
【機器學習】資料探勘演算法——關聯規則(二),挖掘過程,Aprioir演算法
關聯規則挖掘的原理和過程 從關聯規則(一)的分析中可知,關聯規則挖掘是從事務集合中挖掘出這樣的關聯規則:它的支援度和置信度大於最低閾值(minsup,minconf),這個閾值是由使用者指定的。根據 support=(X,Y).count/T.countsupp
關係資料庫標準語言SQL(二)- 超良心的資料查詢整理!
主要內容 資料查詢 基本語法 單表查詢 連線查詢 3. 外連線 巢狀查詢 資料查詢 資料查詢是資料庫的核心操作,該篇將著重介紹資料查詢的五種方式:單表查詢、連線查詢、巢狀查詢、集合查詢和基於派生表的查詢。 基本語
rpm包打包過程詳解(二)——製作原始碼安裝包
製作原始碼安裝包(.tar.gz) 1. 解決依賴的軟體: 系統環境:[紅帽企業Linux.6.4.64位伺服器版].rhel-server-6.4-x86_64 原始碼製作中使用到的軟體為GNU M4,GNU autoconf,GNU automake;GNU
spark SQL (二) 聚合
聚合內建功能DataFrames提供共同聚合,例如count(),countDistinct(),avg(),max(),min(),等。雖然這些功能是專為DataFrames,spark SQL還擁有型別安全的版本,在其中的一些 scala 和 Java使用
大資料基礎知識學習-----Hive學習筆記(二)Hive安裝環境準備
Hive安裝環境準備 Hive安裝地址 Hive安裝部署 Hive安裝及配置 把apache-hive-1.2.1-bin.tar.gz上傳到linux的/opt/software目錄下 解壓apache-hive-1.2.