Советы по настройке AWS S3 и Databricks - PullRequest
0 голосов
/ 19 декабря 2018

Я ищу несколько советов о том, как нам обрабатывать и хранить наши данные в 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)

Этогде мы начали бы строить наш анализ и получитьв данные.Производительность загрузки в течение многих дней не так хороша, как хотелось бы.

На данный момент эти инструменты открыты для нас, но мы открыты для их изменения.

...