ШАГ 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: Я хочу, чтобы взорвать каждый столбец STRUCT в другой точке зрения. Когда я пытаюсь ниже запрос, я получаю сообщение об ошибке, как «число псевдонимов, поставляемых в предложении 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 содержит более одной СТРУКТУРЫ.
Любая помощь?
pls. посмотрите на http://stackoverflow.com/questions/11373543/explode-the-array-of-struct-in-hive –
hi ram. Я обновил вопрос. любая помощь plz? –