第 1 步:我编写了一个 UDF,它将形成 2 个或更多 Struct 列,如汽车、自行车、公共汽车。UDF 还从称为“详细信息”的其他视图中获取一些信息。
cars struct form is: ARRAY<STRUCT<name:string, mfg:string, year:int>>
bikes struct form is: ARRAY<STRUCT<name: string, mfg:string, year: int, price: double>>
buses struct form is: ARRAY<STRUCT<name: string, mfg:string, year: int, price: double>>
我正在使用此 UDF 创建视图“车辆”,如下所示
ADD JAR s3://test/StructFV-0.1.jar;
CREATE TEMPORARY FUNCTION TEST_STRUCT AS "com.test.TestStruct";
CREATE DATABASE IF NOT EXISTS ranjith;
USE ranjith;
DROP VIEW IF EXISTS vehicles;
CREATE VIEW vehicles AS
SELECT t.cars, t.bikes, t.buses
FROM details d LATERAL VIEW TEST_STRUCT(d.data) t AS
cars, bikes, buses;
第 2 步:我想将每个结构列分解为另一个视图。当我尝试以下查询时,我收到类似“AS 子句中提供的别名数与预期的 UDTF 输出的列数不匹配”之类的错误
USE ranjith;
DROP VIEW IF EXISTS cars;
CREATE VIEW cars AS
SELECT c.name as name, c.mfg as mfg, c.year as year
FROM vehicles v LATERAL VIEW EXPLODE (v.cars) exploded_table as c;
注意:如果我有只有汽车结构的 UDF,工作正常。仅当 UDF 包含多个 STRUCT 时才面临问题。
有什么帮助吗?