这是将数据加载并合并到Databricks上现有Delta表的最佳方法吗?

时间:2019-05-02 15:20:48

标签: apache-spark apache-spark-sql azure-databricks delta-lake

我对使用Databricks并不陌生,我正在尝试测试将小时文件连续加载到将用于报告的主文件中的有效性。每个小时的文件大约为3-400gb,并包含约1-1.3b的记录。我希望主表存储约48个小时的数据,但实际上我只需要6个小时的文件即可完成对数据的查看。

我当前的过程在下面,看来工作正常。每小时csv文件存储在Azure DataLake(Gen1)上,并且主表使用ADL Gen2作为存储。这些是最佳选择吗?这个过程听起来不错还是我做错了什么? :)

csvdata = spark.read.format("csv").option("header","true").option("ignoreLeadingWhiteSpace","true").option("ignoreTrailingWhiteSpace","true").option("timestampFormat","yyyy-MM-dd HH:mm:ss.SSS").option("delimiter","|").option("inferSchema","true").option("mode","FAILFAST").csv("adl://pathToCsv").createOrReplaceTempView("tempdata").cache()

```sql Merge
MERGE INTO primaryTable
USING tempdata
ON primaryTable.UserGuid = tempdata.UserGuid AND primaryTable.OrgGuid = tempdata.OrgGuid
WHEN MATCHED AND cast(unix_timestamp(primaryTable.timestamp,'yyyy/MM/dd HH:mm:ss.SSS') AS timestamp) < cast(unix_timestamp(tempdata.timestamp,'yyyy/MM/dd HH:mm:ss.SSS') AS timestamp) THEN
  UPDATE SET *
WHEN NOT MATCHED
  THEN INSERT *

0 个答案:

没有答案
相关问题