Я ищу несколько советов о том, как нам обрабатывать и хранить наши данные в AWS s3 и загружать данные в блоки данных:
Мы ежечасно переносим CSV-файлы в AWS s3 в формате zip (gzip).
“s3://Files/2018/12/18/hourly_data_2018121800.gz”
Итак, к концу дня у нас 24 файла в день.
Поэтому каждое утро около 3 часов утра, чтобы учесть задержки, я загружаю файлы вчерашних дней.
load_name = '/mnt/Files/' + yr + '/' + mth + '/' + dy
s3_files = spark.read.format("csv")\
.options(header='True', inferSchema='True')\
.load(load_name)
Затем я выполняю несколько задач обработки данных (переименование столбцов и изменение типов данных)
Ничего особенного.
Затем я пишу в другой каталог в s3:
file_name = 's3n://AWS_KEY:AWS_SECRET_KEY@new-file-directory/year=' + yr + '/month=' + mth + '/day=' + dy' + '/'
s3_files.write.format("parquet")
.mode('overwrite')
.save(file_name)
Я написал в формате Parquet, чтобы я мог использовать AWS Athena для быстрого запроса данных, а затем наши данные можно перенести в наш инструмент BI Tableau.
Но у нас также есть задачи, которыемы хотим использовать блоки данных для анализа, более детальное глубокое погружение в него.
Пример:
Я загружу все данные 2018 года:
load_name = '/mnt/new-file-directory/year=2018/month=**/day=**/'
s3_files = spark.read.format("parquet")\
.options(header='True', inferSchema='True')\
.load(load_name)
Этогде мы начали бы строить наш анализ и получитьв данные.Производительность загрузки в течение многих дней не так хороша, как хотелось бы.
На данный момент эти инструменты открыты для нас, но мы открыты для их изменения.