【发布时间】:2018-11-01 18:26:56
【问题描述】:
我有 Azure 群集设置,可以从 Azure 数据湖中的文本文件创建一个表。然后我有另一个表,它是基于上述第一个表的 SQL 语句。我更新了 Data-Lake 中的文本文件并针对第一个表运行 Refresh Table,一切都很好,我从文本文件中看到了更改的信息。然后我对第二个表运行刷新表,当我查询该表时,它不反映文本文件中的更改。以下是我拥有的笔记本中每个单元格的详细信息。
这是创建指向文本文件的表格的单元格
%sql
Create Table If Not Exists Raw.ReferenceTables
Using TEXT
Location "/mnt/adls/Raw/SAP/sd13.txt"
这是创建指向上面 Raw.ReferenceTables 表的表的单元格
%sql
Create Table If Not Exists Raw.CostCenter
as
Select ltrim(rtrim(substring(value, 9, 6))) CostCenterId,
ltrim(rtrim(substring(value, 15, 30))) CostCenterDescription,
ltrim(rtrim(SubString(value, 45, 1))) CostCenterCategory,
ltrim(rtrim(SubString(value, 51, 5))) ProfitCenterID,
ltrim(rtrim(SubString(value, 56, 15))) StdHierarchy,
ltrim(rtrim(substring(value, 71, 4))) CompanyId
From Raw.ReferenceTables
Where substring(value,2 ,3) = '048'
AND substring(value, 1 ,1) = 'D'
AND substring(value, 5 ,4) <> 'SC-1'
所以现在当我第一次查询 Raw.CostCenter 时,一切看起来都不错。
%sql
Select * From Raw.CostCenter
然后我更新了 DataLake 中的 txt 文件并针对 Raw.ReferenceTables 和 Raw.CostCenter 表运行 Refresh Tables
%sql
Refresh Table Raw.ReferenceTables
%sql
Refresh Table Raw.CostCenter
当我查询 Raw.ReferenceTables 时,我可以看到更新的信息,但是当我查询 Raw.CostCenter 表时,我看不到任何更改。我尝试只使用定义 Raw.CostCenter 的查询并运行它,它也会拉回我期望的结果。
如果我删除 Raw.CostCenter 表然后再次创建它,它将显示正确的更新信息。
如果我遗漏了一些基本的东西,我提前道歉,因为这是我第一次让用户 Databricks 做任何事情。这似乎很简单,但我只是不明白我在这里缺少什么。谢谢。
我对 Raw.CostCenter 表进行了描述,如下面的其中一个 cmets 中所述,这就是结果
CostCenterId string null
CostCenterDescription string null
CostCenterCategory string null
ProfitCenterID string null
StdHierarchy string null
CompanyId string null
# Detailed Table Information
Database raw
Table costcenter
Owner root
Created Time Wed Oct 31 20:35:50 UTC 2018
Last Access Thu Jan 01 00:00:00 UTC 1970
Created By Spark 2.3.0
Type MANAGED
Provider parquet
Table Properties [transient_lastDdlTime=1541018150]
Location dbfs:/user/hive/warehouse/raw.db/costcenter
Serde Library org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
InputFormat org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
OutputFormat
org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
Storage Properties [serialization.format=1]
但我看不出这对我了解如何更新表格有什么帮助。
【问题讨论】:
标签: azure azure-data-lake databricks