2016-07-26 32 views
1

Ich habe eine HBase-Tabelle mit Spaltenfamilien (Name, Kontakt) und Spalten, Name (String), Alter (String), workStreet (String), workCity (String), workState (String).Wie erstellt man eine externe Hive-Tabelle mit komplexen Datentypen, die auf die hbase-Tabelle zeigt?

Ich möchte eine externe Hive-Tabelle erstellen, die auf diese Hbase-Tabelle mit folgenden Spalten zeigt.
Name (String), Alter (String), Adresse (Struct).

CREATE EXTERNAL TABLE hiveTable(id INT,name STRING, age STRING, 
address STRUCT<Street:STRING,City:STRING,State:STRING>) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" ="Name:name,Name:age,Contact:workStreet, Contact:workCity, Contact:workState") 
TBLPROPERTIES("hbase.table.name" = "hbaseTable"); 

in folgende Fehler lief,

Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: 
MetaException(message:org.apache.hadoop.hive.serde2.SerDeException org.apache.hadoop.hive.hbase.HBaseSerDe: columns has 3 elements while hbase.columns.mapping 
has 5 elements (counting the key if implicit)) 
+0

[haben Sie hier geprüft?] (Https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration) –

+0

@RamPrasadG Vielen Dank für Ihre Hilfe. – sen

Antwort

0

Ich habe mit Karte statt Struct versucht. Unterhalb der Abfrage ist,

CREATE EXTERNAL TABLE hiveTable(id INT,name STRING,age STRING, 
          address MAP<String,String>) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = "Name:name,Name:,Contact:") 
TBLPROPERTIES("hbase.table.name" = "hbaseTable");