ablog

不器用で落着きのない技術者のメモ

Spark on EMR から Glue Catalog を参照する

Spark on EMR から Glue Catalog を参照してみたメモ。

前提

  • Glue カタログにすでにデータベースとテーブルは存在するものとする。

設定

  • EMRクラスターを作成する際に
    • [ソフトウェア設定]で Spark にチェックを入れ、
    • [AWS Glue Data Catalog の設定 (オプション)]-[Spark テーブルメタデータに使用]にチェックを入れる。

Glue カタログを参照してみる

  • PySpark REPL を起動する。
$ pyspark
  • データベースを表示する PySpark のコードを実行する。
from pyspark.sql import SparkSession
spark = SparkSession.builder.           \
  appName("ExamplePySparkSubmitTask").  \
  config("spark.databricks.hive.metastore.glueCatalog.enabled", "true"). \
  enableHiveSupport(). \
  getOrCreate()
print(spark.sparkContext.getConf().get("spark.databricks.hive.metastore.glueCatalog.enabled"))
spark.sql("show databases").show()
sql("SELECT COUNT(*) FROM ssbgz.gz_customer").show()
spark.stop()
  • 実行結果
>>> spark.sql("show databases").show()
+------------+
|databaseName|
+------------+
|     default|
|       ssbgz|
+------------+
>>> sql("SELECT COUNT(*) FROM ssbgz.gz_customer").show()
+--------+                                                                      
|count(1)|
+--------+
| 3000000|
+--------+