2016-07-29 22 views
0

Mein Code ist als unten ..FROM_UNIXTIME denkt Datenkette ist, wo Daten int/Bigint in Hadoop Hive ist

SELECT 
     to_date(from_unixtime(time_first_touch)) AS sDate 
    FROM (
SELECT 
      MIN(GET_JSON_OBJECT(swanviraw.textcol,'$.ev_time')) as time_first_touch, 
      COUNT(*) as number_of_events 
     FROM swanviraw 
    ) v 

Sein eine fehler- Fehler zu werfen, während Anweisung kompilieren: failed: SemanticException [Error 10014]: Linie 2:10 Falsche Argumente 'time_first_touch': Keine passende Methode für die Klasse org.apache.hadoop.hive.ql.udf.UDFFromUnixTime mit (string). Mögliche Auswahl: FUNC (bigint) FUNC (bigint, string) FUNC (int) FUNC (int, string) [ERROR_STATUS]

Nun ist der Punkt, die folgende Abfrage funktioniert prima. . hat die ev_time int/Bigint Werte als MIN perfekt in der folgenden ..

SELECT 
        MIN(GET_JSON_OBJECT(swanviraw.textcol,'$.ev_time')) as time_first_touch, 
        COUNT(*) as number_of_events 
       FROM swanviraw 

Jede Hilfe ..

Dank ist herzlich willkommen arbeitet

+0

'MIN (unix_timestamp (GET_JSON_OBJECT (swanviraw. textcol, '$. ev_time'))) - Hast du das versucht? –

+0

ev_time ist unixtime, warum um es wieder zu konvertieren .. – Arnab

+0

weil 'GET_JSON_OBJECT' gibt json string zurück ... also' MIN (unix_timestamp (GET_JSON_OBJECT (swanviraw.textcol, '$. Ev_time'))) 'ODER' MIN (cast (GET_JSON_OBJECT (swanviraw.textcol, '$. Ev_time') 'sollte funktionieren - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-get_json_object –

Antwort

0

Als GET_JSON_OBJECTreturns json string und als Fehler zeigt an, dass from_unixtime erwarten int oder bigint, müssen Sie time_first_touch zu bigint konvertieren:

SELECT 
     to_date(from_unixtime(time_first_touch)) AS sDate 
    FROM (
SELECT 
      MIN(cast(GET_JSON_OBJECT(swanviraw.textcol,'$.ev_time') as bigint)) as time_first_touch, 
      COUNT(*) as number_of_events 
     FROM swanviraw 
    ) as v 

ODER

SELECT 
     to_date(from_unixtime(time_first_touch)) AS sDate 
    FROM (
SELECT 
      MIN(unix_timestamp(GET_JSON_OBJECT(swanviraw.textcol,'$.ev_time'))) as time_first_touch, 
      COUNT(*) as number_of_events 
     FROM swanviraw 
    ) as v