Использование union () для объединения исторических и живых данных, разделенных на разные поля - PullRequest
0 голосов
/ 15 октября 2018

У меня есть потоковая передача данных датчика, где данные сохраняются в S3, разделенные по времени (год / месяц / день).Я называю это посадочной зоной .

Затем у меня есть периодический пакетный процесс, чтобы взять последние данные из посадочной зоны и сохранить их в другом наборе данных в S3, который разделен другимнабор ключей.Это разделение по соображениям производительности;пользователи обычно фильтруют по ключам разделов, поэтому при запросах объем данных, которые необходимо извлечь с диска, сводится к минимуму.Я называю это аналитической зоной .

. Теперь у меня есть пользователь, которому необходимо запрашивать данные как в зоне приземления, так и в аналитической зоне, т. Е. Чтобы у них были самые свежие данные.

Подходит ли union() для объединения наборов данных, имеющих одинаковые столбцы, но разделенных по разным полям?Например,

// historical contains data up to but excluding Year=2018, Month=10, Day=1
// assetID is a partition field
historicalDF = spark.sql("SELECT * FROM historical WHERE assetID = 123")

// Year, Month and Day are partition fields
liveDF = spark.sql(
         """SELECT * FROM live 
            WHERE Year = 2018 AND Month = 10 AND Day = 1 AND assetID = 123""")

allDF = historicalDF.union(liveDF)

1 Ответ

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

Подходит ли union () для объединения наборов данных, имеющих одинаковые столбцы, но разделенных по разным полям?

Почему бы и нет?Как только данные загружаются с предикатами, все возможности для оптимизации посредством сокращения разделов (главное преимущество наличия разделенной таблицы) уже используются.

То, что вы получаете, это просто DataFrame, как и любой другой, без установленного разделителя. Короткое беспокойство о длинных линиях (и с таким коротким конвейером, нет причин для этого), union просто отлично.

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