2016-04-07 18 views
1

Ich versuche, JSON-Daten zu HIVE zu laden. Ich verwende die Standard-SERDE, die in HIVE vorhanden ist. Ich habe einen Fehler beim Erstellen der Tabelle. Hilfe benötigt!HIVE Tabelle für JSON erstellen - STRUCT Fehler

JSON-Daten:

{"widget": { 
    "debug": "on", 
    "window": { 
     "title": "Sample Konfabulator Widget", 
     "name": "main_window", 
     "width": 500, 
     "height": 500 
    }, 
    "image": { 
     "src": "Images/Sun.png", 
     "name": "sun1", 
     "hOffset": 250, 
     "vOffset": 250, 
     "alignment": "center" 
    } 
}} 

Die Anweisung erstellen:

CREATE TABLE complex_json(
widget struct<window:struct< title:string,name:string,width:int,height:int>, 
debug:string, 
image:struct< src:string,name:string,hOffset:int,vOffset:int,alignment:string > > 
) 
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'; 

Und ich erhalte den Fehler:

ParseException Linie 2.27 kann nicht Eingang in der Nähe von ‚Fenster‘ ‚erkennen:‘ ‚struct‘ in Spalte Spezifikation

Antwort

0

FENSTER ist ein reserviertes Schlüsselwort in Hive und direkt können Sie nicht als Teil Ihrer Spalte reserviert, reserved key words

Sie haben hier zwei Möglichkeiten:

1.) Verwenden Sie keine reservierten Schlüsselarbeiten als Teil von Spalten. Versuchen Sie, Ihren Objektnamen von Fenster zu sagen window1 und es wird funktionieren.

2.) Wenn Sie Keywords verwenden dann wie folgt verwenden `window`, zurück Zitat und die Säule (Schlüsselwort) So Tisch aussehen wird, erstellen:

CREATE TABLE complex_json(
widget struct< `window` :struct< title:string,name:string,width:int,height:int>, 
debug:string, 
image:struct< src:string,name:string,hOffset:int,vOffset:int,alignment:string > > 
) 
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'; 

auch machen sicher, dass Ihr JSON in einer Zeile ist. Alle diese SerDes erkennen korrekt formatierten JSON nicht.

Hoffe es hilft ... !!!

Verwandte Themen