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から漢字テーブル名、漢字カラム名を使う場合は、ダブルクォートで囲めば動いた。