Таблица Azure Databricks не обновляется - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть установка кластера 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

Затем я обновил txt-файл в DataLake и запустил таблицы обновления для таблиц Raw.ReferenceTables и Raw.CostCenter

%sql
Refresh Table Raw.ReferenceTables
%sql
Refresh Table Raw.CostCenter

Когда я запрашиваю Raw.ReferenceTables, я вижу обновленную информацию, но когда я запрашиваю таблицу Raw.CostCenter, я не вижу никаких изменений. Я попытался просто взять запрос, который определяет Raw.CostCenter, и запустить его, и он также возвращает ожидаемые результаты.

Если я удаляю таблицу Raw.CostCenter, а затем снова создаю ее, она будет отображать правильную обновленную информацию.

Я заранее прошу прощения, если мне не хватает чего-то базового, потому что это первый раз, когда у меня есть пользовательские блоки данных для чего-либо. Это кажется очень прямым, но я просто не понимаю, чего мне здесь не хватает. Спасибо.

Я запустил описание для таблицы 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]               

Но из этого не видно, какую помощь это дает мне, чтобы узнать, как обновить таблицу.

1 Ответ

0 голосов
/ 01 ноября 2018

Сложно определить, где ваши данные на самом деле равны в Databricks.

Вы создали новую физическую таблицу, используя CREATE TABLE AS SELECT, чтобы создать новую таблицу и скопировать данные из существующей таблицы. После выполнения этого оператора связь между Raw.ReferenceTables и Raw.CostCenter больше не существует.

Опишите ваш друг здесь.

А если вам не нужна отдельная копия данных, вы можете создать представление .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...