将 AVRO 加载到 Snowflake 中

问题描述 投票:0回答:1

我有一个具有此架构的 AVRO 文件:

{
  "type":"record",
  "name":"row",
  "fields":
  [
    {"name":"Column1","type":"int"},
    {"name":"Column2","type":"string"}
  ]
}

现在我正在读取暂存文件。

SELECT t.$1
FROM @my_stage/my_file.avro
  ( FILE_FORMAT => 'MY_AVRO' )
  t
;

我收到此错误:

AVRO 文件格式只能生成一列类型变体、对象或数组。使用 MATCH_BY_COLUMN_NAME 复制选项或通过转换复制将数据加载到单独的列中。

我尝试使用 INFER_SCHEMA 和 METADATA$FILE_ROW_NUMBER 等函数来找出 Snowflake 在此文件中看到的内容,但我总是遇到相同的错误。

是否可以从此类文件加载数据? 如果不可能的话,应该如何更改 AVRO 架构? Snowflake 对 AVRO 文件有何期望?

我在 Snowflake 文档中没有找到明确的说明。

snowflake-cloud-data-platform avro
1个回答
0
投票

我无法重现它。

源文件:https://learn.microsoft.com/en-us/azure/databricks/_static/examples/episodes.avro

CREATE FILE FORMAT MY_AVRO 
    TYPE=AVRO,
    TRIM_SPACE=TRUE,
    REPLACE_INVALID_CHARACTERS=TRUE;

SELECT t.$1
FROM @"TEST"."PUBLIC"."TEST"/episodes.avro(FILE_FORMAT => 'MY_AVRO') AS t;

输出:


推断模式功能也有效:

© www.soinside.com 2019 - 2024. All rights reserved.