сравнить имена файлов, чтобы получить последний файл с использованием идентификатора и информации о временном шаге, а затем объединить в один файл в spark scala - PullRequest
0 голосов
/ 03 июля 2018

У меня есть сценарий, в котором файлы данных поступают (в любое время дня и приходят несколько раз в день) в Hadoop HDFS, а таблицы присутствуют в Hive. Поступающие файлы имеют специальное соглашение об именовании с информацией о метке времени и идентификатором (разделенных «_»).

Как можно объединить существующие данные, присутствующие для каждого объекта в их таблице, с входящими данными, убедившись, что последняя запись файла объединена?

Я получил имена файлов в папке и могу их разделить. Как можно сравнить имена файлов, чтобы получить последний файл с использованием идентификатора и информации о временном шаге, а затем объединить в один файл?

def getFilenames(fullpath: String) = {
  val dir = new File(fullpath)
  dir.listFiles.map(_.getName).flatMap(_.split("_"))
} 

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Спасибо, Гаурав, Соглашение об именовании файлов выглядит так:

 ....<Timestemp>_<ID>_<Filetype>_<Filename> 
 ..../20180516064905_012_UTG_TEST.txt

Чтобы быть более точным, я должен определить, является ли файл UTG или каким-либо другим типом, и использовать временную метку, чтобы обновить запись с тем же идентификатором из последнего файла, если эта запись присутствует в нескольких файлах. Например, все записи из файлов UTG следует сравнить с текущими данными и выяснить, какие записи применимы для обновления. Если одна и та же запись с определенным идентификатором записи (например, с идентификатором записи 012) обновляется несколько раз в исходных системах и встречается в разных файлах загрузки, то при обработке для обновления целевой записи должна использоваться последняя запись.

Надеюсь, все ясно. Еще раз спасибо.

0 голосов
/ 03 июля 2018

Просьба предоставить образцы имен файлов, сможет дать вам точное решение. Вы можете попробовать создать список для всех имен файлов и отсортировать их с помощью sortBy. последним элементом списка будет последний файл, прочитайте этот файл и создайте (RDD / DF). для объединения фреймов данных (предыдущих и текущих) посмотрите сюда введите описание ссылки здесь

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