Как можно использовать паркетные перегородки, загружая RDD в Spark? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть следующий набор данных в Parquet

+----------+----+
|        id|type|
+----------+----+
|7116663998|   B|
|2099372681|   A|
|2029172681|   B|
|2096031909|   B|
|5096031909|   A|
|5096031909|   A|
+----------+----+

Набор данных разделен по типу

/.../table
  |- type=A
  |- type=B

Мне нужно загрузить набор данных как RDD с ключом, используя тип в качестве ключа, чтобы обработать его: например, подсчет по ключу (на самом деле мне нужно сгруппировать его с другим меньшим набором данных).

Выполнение следующего кода (я уже пробовал без этапа partitionBy)

spark.read
  .parquet(".../table")
  .rdd
  .map(row => (row.getAs[String]("type"), row.getAs[Int]("id")))
  .partitionBy(new HashPartitioner(2))
  .countByKey()

Я получаю следующий DAG

enter image description here

Учитывая тот факт, что я хочу использовать стратегию разделения, уже используемую Parquet, есть способ избегать перетасовки?

...