Обмен с ведром - PullRequest
       2

Обмен с ведром

0 голосов
/ 22 ноября 2018

У меня есть две таблицы с включенным ведением.

DESCRIBE EXTENDED table1

Table                       |table1                                                                                                 |       |
|Owner                       |user                                                                                                  |       |
|Created                     |Wed Nov 21 16:24:25 CST 2018                                                                             |       |
|Last Access                 |Wed Dec 31 18:00:00 CST 1969                                                                             |       |
|Type                        |MANAGED                                                                                                  |       |
|Provider                    |parquet                                                                                                  |       |
|Num Buckets                 |180                                                                                                      |       |
|Bucket Columns              |[`seq_id`]                                                                                   |       |
|Sort Columns                |[`seq_id`]


DESCRIBE EXTENDED table2

Table                       |table2                                                                                                |       |
|Owner                       |user                                                                                                  |       |
|Created                     |Wed Nov 21 16:15:09 CST 2018                                                                            |       |
|Last Access                 |Wed Dec 31 18:00:00 CST 1969                                                                            |       |
|Type                        |MANAGED                                                                                                 |       |
|Provider                    |parquet                                                                                                 |       |
|Num Buckets                 |180                                                                                                     |       |
|Bucket Columns              |[`seq_id`]                                                                                  |       |
|Sort Columns                |[`seq_id`]

Тогда я ожидаю, что это позволит мне избежать перетасовки (обмена), когда я присоединяюсь к ним обоим.

Однако обментам:

spark.table("table2").join(spark.table("table1"), "seq_id").explain
== Physical Plan ==
Project [seq_id#0, field1#1, ... 165 more fields]
+- SortMergeJoin [seq_id#0], [seq_id#196], Inner
   :- *Sort [seq_id#0 ASC NULLS FIRST], false, 0
   :  +- Exchange(coordinator id: 713544719) hashpartitioning(seq_id#0, 200), coordinator[target post-shuffle partition size: 77108864]
   :     +- *Project [seq_id#0, field1#1,  ... 73 more fields]
   :        +- *Filter isnotnull(seq_id#0)
   :           +- *FileScan parquet 
   test2[seq_id#0, field1#1,... 73 more fields] Batched: true, Format: Parquet, Location: InMemoryFileIndex[maprfs:/ds/hive/warehouse/test2..., PartitionFilters: [], PushedFilters: [IsNotNull(seq_id)], ReadSchema: struct<seq_id:string,field1:string...
   +- *Sort [seq_id#196 ASC NULLS FIRST], false, 0
      +- Exchange(coordinator id: 713544719) hashpartitioning(seq_id#196, 200), coordinator[target post-shuffle partition size: 77108864]
         +- *Project [line_s#195, seq_id#196, field1#197, ... 69 more fields]
            +- *Filter isnotnull(seq_id#196)
               +- *FileScan parquet test1[line_s#195,seq_id#196,field1#197,69 more fields] Batched: true, Format: Parquet, Location: InMemoryFileIndex[maprfs:/ds/test1..., PartitionFilters: [], PushedFilters: [IsNotNull(seq_id)], ReadSchema: struct<line_s:string,seq_id:string,field1:string,...

Я использую Spark 2.2.1, есть идеи, что может быть причиной того, что обмен там все еще происходит?

Таблицы (table1 и tables2) были созданы какниже:

spark.table("src_table1").write
  .bucketBy(180, "seq_id")
  .sortBy("seq_id")
  .saveAsTable("table1")

spark.table("src_table2").write
  .bucketBy(180, "seq_id")
  .sortBy("seq_id")
  .saveAsTable("table2")

Таблицы кустов src_table1 и src_table2 имеют формат паркета без сегментов.

1 Ответ

0 голосов
/ 23 ноября 2018

Похоже, что было включено адаптивное выполнение запросов (spark.sql.adaptive.enabled = true).После отключения этого обмена больше нет.Нужно больше копать, почему так происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...