HiveQL の標準的な拡張子ってなんだろう?
Written by @ryysud Dec 24, 2017 23:48 · 883 words · 2 minutes read
まえおき
Hive とか HiveQL ってなにとかは今回は割愛します。
自分が今まで見てきたファイルだと .hql
とか .sql
など使われていて、実際どんな拡張子だろうが関係ない(違かったらごめんなさい)気もするけど、Apache Hive としての標準はなんなんだろうと気になって調べたみたというやつです。
適当にぐぐる 🔍
どうやら Apache Hive Project では .q
を拡張子として使ってるみたい。
The standard at Apache Hive project is to use .q
https://stackoverflow.com/questions/15835937/standard-file-extension-for-hive-ddl-script
と思ったら LanguageManual Cli - Apache Hive の Hive CLI のサンプルでは .sql
になってる。
$HIVE_HOME/bin/hive -f /home/my/hive-script.sql
$HIVE_HOME/bin/hive -f hdfs://<namenode>:<port>/hive-script.sql
$HIVE_HOME/bin/hive -f s3://mys3bucket/s3-script.sql
混乱してきたので Apache Hive のリポジトリを覗いてみる 👀
GitHub で公開されている Mirror of Apache Hive を見てみると .q
と .sql
が共存している感じだけど、コミットログ的には .sql
のが新しいことがわかる。
- hive/hplsql/src/test/queries/ →
.sql
が使われている - hive/ql/src/test/queries/ →
.q
が使われている
新しい方が正でしょ!と思ったら hplsql ってなんだそれってなったので更に調べてみる。
Hive HPL/SQL is なに?
どうやら hplsql は Hive 2.0.0 からサポートされた Hive HPL/SQL の略のようで、Hive HPL/SQL の実体は Hive の他にも SparkSQL や Impala などでも使える汎用的なクエリのようでした。
Hive Hybrid Procedural SQL On Hadoop (HPL/SQL) is a tool that implements procedural SQL for Hive. It is available in Hive 2.0.0 (HIVE-11055).
HPL/SQL is an open source tool (Apache License 2.0) that implements procedural SQL language for Apache Hive, SparkSQL, Impala as well as any other SQL-on-Hadoop implementation, any NoSQL and any RDBMS.
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=59690156
とりあえずこの Hive HPL/SQL で使っている拡張子が .sql
ということはわかりました。hplsql.org をさらっと見てみたら、なんか色々出来そうなことはわかったので、Hive 2.0.0 を本番運用する際にはチェックしてみようと思いました。(触ってみたときにはまた記事にまとめます)
まとめ
Hive HPL/SQL では .sql
が使われていて、HiveQL は現在 SQL を完全にはサポートしていないけど、将来的には完全にサポートしていきますよの意思表示で Hive CLI のサンプルなどで .sql
を使っているのかなと勝手な解釈をしました。
HiveQL の SQL準拠 への取り組みに関しては、Hadoop Summit 2016 Tokyo の Major advancements in Apache Hive towards full support of SQL compliance というセッションが大変わかりやすいです。こちらのスライドの概要は Hadoop Summit のブログ を見てみるといいかも。
まあ以前使われていた .q
でも、サンプル通りの .sql
でも、どちらでも好きな方を使えばいいかなって感じで腑に落ちたので、今回の記事を書いた甲斐がありました。
今後も Hive と仲良くやっていきたいと思います〜〜〜