我有Azure群集安装程序,该安装程序从Azure Data Lake中的文本文件创建表。然后,我有了另一个表,该表是基于上述第一个表的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表进行了描述,这就是结果
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]
但是我从中看不到这对我有什么帮助,以找出如何更新表格。