は、私は以下のコードシーケンス寄木細工と述語のプッシュダウンと辞書圧縮
val obs = spark.read.parquet("s3://xxxx/parquettests/by_pat/")
val single = obs.filter($"pat" === "abcd")
single.explain
を使用して、私は、述語プッシュダウン
+- Filter (isnotnull(pat#930) && (pat#930 = abcd))
+- FileScan parquet PartitionFilters: [],
PushedFilters: [IsNotNull(pat), EqualTo(pat,abcd)]
バック3メガバイトで、この(200個のファイルの実行時間を実行計画を取得それぞれ、 "pat"で区切られたハッシュ)は32秒です。
pat = abcdが1つのファイルにのみ含まれているとすれば、それは3MBのファイルを読み込み、他のすべてをスキップする32秒です。たくさん聞こえます。
私はこれらのファイルのparquet-toolsをチェックして、その列のPLAIN_DICTIONARYに「RLE:BIT_PACKED VLE:PLAIN [more] VC:21400」の2ページを記載しています。
したがって、私は辞書の圧縮がPLAINに戻っていると思われますが、わかりませんし、変更しようとするすべての試みが機能しませんでした。
思考?