我正在尝试建立一个简单的dbt管道,它使用一个存储在azure数据湖存储上的Parquet表,并创建另一个也将存储在同一位置的表。
在我的下面 models/
(定义为我的源路径)我有2个文件 datalake.yml
以及 orders.sql
. datalake.yml
看起来像这样:
version:2
sources:
- name: datalake
tables:
- name: customers
external:
location: path/to/storage1 # I got this by from file properties in Azure
file_format: parquet
columns:
- name: id
data_type: int
description: "ID"
- name: ...
我的 orders.sql
表如下所示:
{{config(materialized='table', file_format='parquet', location_root='path/to/storage2')}}
select name, age from {{ source('datalake', 'customers') }}
我也在用 dbt-external-tables
包裹。还要注意,当我跑步时 dbt debug
一切都很好,我可以连接到我的数据库(这恰好是databricks)。
我试过跑步 dbt run-operation stage_external_sources
它回来了 Error: staging external sources is not implemented for the default adapter
. 当我跑的时候 dbt run
,我明白了 Error: UnresolvedRelation datalake.customers
.
或者我可以用Hive元存储来代替?任何关于如何解决这个问题的建议都将不胜感激!
2条答案
按热度按时间ipakzgxi1#
这可能还不可用。看起来它仍然是一个开放的问题,到目前为止还没有开发工作。
相关问题
dbt-external-tables
包回购:支持spark外部表您有来自的依赖项吗
dbt-spark
安装?以下是一些相关问题:
spark\连接\u url在连接到databricks时不包含工作区\u id
支持delta lake格式
我意识到这些对简单的事情并没有帮助
dbt-external-tables
用例,但看起来仍在进行开发以支持azuredatabricks/datalake堆栈。稍后再深入研究一下,因为这是一个与我相关的用例。
m2xkgtsf2#
我帮助维护两个
dbt-spark
插件和dbt-external-tables
包裹。我可以确认,它们的互操作性还处于初步阶段,我非常欢迎为改进互操作性做出贡献。我不认为这是一个很大的提升,尽管其中一个挑战是spark/databricks支持两个不同的create external table
语法(如该期所述)。我知道你说的
path/to/storage
作为源的外部位置和location_root
您的配置orders
模型。前者是读取数据的地方,后者是将模型具体化为表的地方。我不知道你的意思是表示相同的占位符还是不同的占位符。edit:til,您可以在sparksql中直接从某些文件类型中选择
select * from filetype.filepath
. 我相信你可以注册一个来源,比如:这意味着您可以将代码模板化为:
决定: