ハイブフックは、次の状況下で行ってもよいハイブフック関数であります
https://www.slideshare.net/julingks/apache-hive-hooksminwookim130813
私たちは、フック関数を実装します
頼ります
<?xmlのバージョン= "1.0"エンコード= "UTF-8"> <プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0" のxmlns:XSI = "のhttp://www.w3 .ORG / 2001 / XMLスキーマ・インスタンス」 のxsi:のschemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <親> <たartifactId>インタビュー-親</たartifactId> <groupIdを> com.interview </ groupIdを> <バージョン> 1.0-SNAPSHOT </バージョン> </親> <modelVersion> 4.0.0 </ modelVersion> <たartifactId>インタビュー-bigdata </たartifactId> <依存性> <! - logback - > <依存> <groupIdを> org.slf4j </ groupIdを> <たartifactId> log4jのオーバーSLF4J </たartifactId> <バージョン> 1.7.25 </バージョン> </依存関係> <! -ハイブ- > <依存> <groupIdを> org.apache.hive </ groupIdを> <たartifactId>ハイブ-のexec </たartifactId> <バージョン> 1.1.0 </バージョン> </依存関係> </依存関係> </プロジェクト>
単にログの行を出力コード
com.bigdata.hiveパッケージ; 輸入org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext; 輸入org.apache.hadoop.hive.ql.hooks.HookContext; 輸入org.slf4j.Logger; 輸入org.slf4j.LoggerFactory。 パブリッククラスMyHiveHook実装ExecuteWithHookContext { プライベート静的ロガーロガー= LoggerFactory.getLogger(MyHiveHook.class)。 ます。public void実行(HookContext hookContextは)例外{スロー logger.infoを( "これは私のハイブフックです"); } }
俵
きれいなパッケージをMVN
私たちは、ハイブの下にあるすべてのhiveserver2の/ var / lib /ディレクトリマシンにアップロードしたjarパッケージを置く、またはディレクトリHDFSを見つけるだろう
マスター@ルート:の/ var / libに/ハイブ#lsの examples.desktopインタビュー-bigdata-1.0-SNAPSHOT.jarに
ハイブへの変更の所有者
sudoのchownコマンドハイブ:ハイブ./interview-bigdata-1.0-SNAPSHOT.jar
configureジャーカタログやフック関数にClouderaのマネージャー
JARディレクトリ
フック関数は、ここに配置されたhive.exec.pre.hooksは、その時点でフック関数は、SQLを実行する前に実行されます