AWS S3和Databricks的设置建议

时间:2018-12-19 13:31:35

标签: apache-spark amazon-s3 pyspark databricks

我正在寻找有关如何在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)

这是我们开始进行分析并获取数据的地方。 加载许多天的性能不如我们希望的那样。

目前这些工具向我们开放,但我们愿意改变它们。

0 个答案:

没有答案