问题描述
我们的 dbt 安装是 0.18.1
包:
- 包:fishtown-analytics/dbt_utils 版本:0.6.2
- 包:fishtown-analytics/dbt_external_tables 版本:0.5.0
我们使用 dbt 包在 Redshift 中创建外部表 我们想使用 AVRO 模式,如下例所示。
CREATE EXTERNAL TABLE my_schema.avro_users (
name VARCHAR(255),favorite_number INTEGER,favorite_color VARCHAR(255)
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES ('avro.schema.literal'='
{
"type" : "record","name" : "avro_users","namespace" : "default","fields" : [ {
"name" : "name","type" : [ "null","string" ],"default" : null
},{
"name" : "favorite_number","int" ],{
"name" : "favorite_color","default" : null
} ]
}
')
STORED AS AVRO
LOCATION 's3://my_bucket
为 Avro 的 Redshift 外部表编写 YML 规范的正确方法是什么? 我们尝试了以下方法:
version: 2
sources:
- name: my_source
database: dwh
schema: my_schema
loader: S3
tables:
- name: avro_test_users
external:
location: "s3://my_bucket"
row_format: "serde 'org.apache.hadoop.hive.serde2.avro.avroserde'
with serdeproperties ('avro.schema.literal'='
{
\"type\" : \"record\",\"name\" : \"avro_users\",\"namespace\" : \"default\",\"fields\" : [ {
\"name\" : \"name\",\"type\" : [ \"null\",\"string\" ],\"default\" : null
},{
\"name\" : \"favorite_number\",\"int\" ],{
\"name\" : \"favorite_color\",\"default\" : null
} ]
}
')"
columns:
- name: name
data_type: VARCHAR(255)
- name: favorite_number
data_type: INTEGER
- name: favorite_number
data_type: VARCHAR(255)
我们得到以下错误:
Encountered an error while running operation: Database Error
Unsupported serde triplet. InputFormat=org.apache.hadoop.mapred.TextInputFormat OutputFormat=org.apache.hadoop.hive.ql.io.HiveIgnoreKeytextoutputFormat SerializationLib=org.apache.hadoop.hive.serde2.avro.AvroSerDe
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)