きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

AWS Glueのデータカタログでの日本語カラムの話

少しだけの実験をしている。

Hive互換な名前ってなんだ?

Hive互換な名前にするには、
英数小文字とアンダースコアのみらしい。

それはGlue側のマニュアルの話。

Hiveのマニュアルも調べておく。

LanguageManual DDL - Apache Hive - Apache Software Foundation

Hive 0.12では確かにそうだ。
Hive 0.13以降はもっと緩い。
カラム名ユニコードを使えるようになった、ただしバックチックで囲む必要がある。
文章的にはテーブル名に言及してないが、バックチックで使えるはずだ。
Hive 1.2.0以降ではドットとコロンが使えなくなった。

GlueのデータカタログがどのバージョンのHiveに相当するだろうか。
Glueの元になってるEMRとHiveのバージョン関係はリリースノートから読み取れる。
GlueとEMRの関係は恐らくSparkバージョンが同じになるだろう。
Glue1.0と2.0はSpark 2.4.3だから、EMR5.25.0のHive2.3.5と考えるのが自然。
そのため、一部制限はあるものの、漢字は十分に使えると考えられる。

EMR Spark Hive
6.0.0 2.4.5 3.1.2
5.30.0 2.4.4 2.3.6
5.29.0 2.4.4 2.3.6
5.28.1 2.4.4 2.3.6
5.28.0 2.4.4 2.3.6
5.27.0 2.4.4
5.26.0
5.25.0 2.4.3 2.3.5
5.24.1
5.24.0 2.4.2
5.23.0
5.22.0
5.21.0
5.20.0 2.4.0 2.3.4
5.19.0
5.18.0 2.3.2
5.17.1
5.17.0
5.16.0 2.3.1


Glue2.0において、Spark SQLを書いてみたとき、
漢字テーブル名と漢字カラム名は、バックチックで囲んで処理できた。
ドットとコロンはまだ試してない。

S3の漢字フォルダ内に、漢字ヘッダーを含めたcsvを配置して、クローラにテーブルを作らせたら、漢字が文字数分のアンダースコアになったテーブル名になった。漢字カラムは問題ない。

AWSコンソールからテーブルを作る場合、漢字のテーブル名は使える。そのため、クローラによる既存テーブル更新の動かし方は出来た。

Athenaから漢字テーブル名、漢字カラム名を使う場合は、ダブルクォートで囲めば動いた。