
188
9 章 Spark SQL
することになるので、オーバーヘッドが生じてしまうことがあります
†
。現時点ではコード生成は
まだ
experimental
ですが、大きなクエリを使用する処理や、同じクエリを何度も繰り返し実行す
るような処理を行う場合は、使ってみることをお勧めします。
チューニングに使うべきかもしれない
2
つめのオプションは、
spark.sql.inMemoryColumnar
Storage.batchSize
です。
SchemaRDD
をキャッシュする場合、
Spark SQL
はその
RDD
内のレ
コード群を、このオプション(デフォルトは
1000
)で指定されたサイズをバッチとしてグループ
化し、そのバッチ単位で圧縮を行います。このサイズを非常に小さくすれば圧縮率が下がってしま
いますが、一方で非常に大きく指定しても、メモリ内でそれぞれのバッチの構築ができなくなって
しまうかもしれないので、問題になります。テーブル内の行が大きいなら(すなわちフィールド
数が数百に及んだり、
Web
ページのように非常に長くなりうる文字列フィールドが含まれている
場合)、
out-of-memory
エラーが生じないようにバッチサイズを小さくする必要があるかもしれま
せん。行がそれほど大きくないなら、おそらくはデフォルトのバッチサイズは妥当です。これは、
1,000
レコードを超えると、それ以上は圧縮の効果が向上しなくなっていくためです。
9.7
め
Spark SQL
を使い、
Spark
で構造化および半構造化データを扱う方法を見てきました ...