我正在寻找有关如何在AWS s3上处理和保存数据以及如何在Databricks中加载数据的建议:
我们每小时将CSV文件以zip(gzip)格式丢弃到AWS s3中。
“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。
但是我们还有一些我们想使用Databricks进行分析的任务,对其进行了更详细的深入研究。
示例:
我将加载所有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)
这是我们开始进行分析并获取数据的地方。 加载许多天的性能不如我们希望的那样。
目前这些工具向我们开放,但我们愿意改变它们。