0

Я использую версию Spark 1.4.1. Я пытаюсь загрузить секционированную таблицу Hive в DataFrame, где в таблице Hive разбивается на номер year_week, при сценарии у меня может быть 104 раздела.Загрузите куст секционированной таблицы в Spark Dataframe

Но я мог видеть, что DataFrame загружается данными в 200 разделов, и я понимаю, что это связано с тем, что по умолчанию значение spark.sql.shuffle.partitions установлено в 200.

Я хотел бы знать, есть ли какой-либо хороший способ. Я могу загрузить таблицу Hive в Spark Dataframe с 104 разделами, убедившись, что Dataframe разбивается на year_week во время самого времени загрузки Dataframe.

Причина моего ожидания в том, что я буду делать несколько объединений с огромными таблицами томов, где все разделены номером year_week. Таким образом, при использовании Dataframe, разделенного на year_week, число и загрузка соответственно сократят время от повторного разбиения их на year_week.

Пожалуйста, дайте мне знать, если у вас есть предложения ко мне.

Спасибо.

+1

Вы пробовали 'df.repartition ($" year_week ")'? –

+0

да, я в состоянии сделать. Но перераспределение приводит к перетасовке данных, что в моем случае является более дорогостоящим. Поэтому я пытаюсь увидеть способ загрузки Dataframe с теми же разделами таблицы Hive во время самой загрузки. Я пытаюсь получить это, чтобы избежать переделки на Dataframe. Есть ли какая-либо стратегия разбиения, которую я могу инициализировать с помощью Dataframe? – sureshsiva

+0

Теперь я вижу. Я ничего не знаю. Мы закончили загрузку каждого раздела как отдельного DataFrame, переделку и просто объединение кадров позже. Таким образом, мы как-то ограничили переделку на одного работника. –

ответ

0

Использование hiveContext.sql("Select * from tableName where pt='2012.07.28.10'")

Где, пт = PartitionKey, в вашем случае будет year_week и соответствующее значение с ней.

Смежные вопросы