2017-01-27 5 views
0

Ich versuche, eine externe Tabelle zu erstellen, die zu einem S3-Bucket routet. Ich möchte alle Tabellen nach Datum gruppieren, so dass der Pfad etwa so aussieht wie s3://<bucketname>/<date>/<table-name>. Meine aktuelle Funktion es für die Erstellung sieht so etwas wieString-Interpolation in HiveQL

concat('s3://<bucket-name>/', date_format(current_date,'yyyy-MM-dd'), '/<table-name>/'); 

ich fein dies in einer SELECT Abfrage ausführen kann; aber wenn ich versuche, es in meiner Tabellenerstellung Erklärung zu setzen, bekomme ich folgende Fehlermeldung:

set s3-path = concat('s3://<bucket-name>/', date_format(current_date,'yyyy-MM-dd'), '/<table-name>/'); 

CREATE EXTERNAL TABLE users 
(id STRING, 
name STRING) 
STORED AS PARQUET 
LOCATION ${hiveconf:s3-path}; 

> FAILED: ParseException line 7:9 mismatched input 'concat' expecting StringLiteral near 'LOCATION' in table location specification 

Gibt es eine Möglichkeit String Interpolation oder einen Funktionsaufruf in Hive in diesem Zusammenhang zu tun?

Antwort

0

können Sie so etwas versuchen. retrieve udf results in Hive. Im Wesentlichen können Sie als Workaround ein Skript erstellen und es vom Terminal aus aufrufen, indem Sie den Parameter wie eine Hive-Konfiguration übergeben.

Verwandte Themen