SCHRITT 1: Ich habe eine UDF geschrieben, die 2 oder mehr Struct Spalten wie Autos, Fahrräder, Busse bilden wird. Auch die UDF nimmt einige Informationen aus anderen Ansichten namens 'Details'.So erstellen Sie eine Ansicht für Strukturfelder im Stock
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>>
Ich schaffe einen Blick ‚Fahrzeuge‘ mit dieser UDF wie unten
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;
SCHRITT 2: Ich möchte jede Struktur Spalte in eine andere Ansicht zu explodieren. Wenn ich die folgende Abfrage versuchen, ich bin immer Fehler wie
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;
Hinweis „Die Anzahl der Aliase in der AS-Klausel angegeben wird, stimmt nicht mit der Anzahl der Spalten, ausgegeben durch den erwarteten UDTF überein“: Wenn ich UDF habe mit nur Autos struct, funktioniert gut. Problem nur dann, wenn die UDF mehr als eine STRUCT enthält.
Irgendwelche Hilfe?
pls. http://stackoverflow.com/questions/11373543/explode-the-array-of-struct-in-hive –
hi ram. Ich habe die Frage aktualisiert. jede Hilfe plz? –