2016-01-06 11 views
6

Utworzono następujący kod HIVE i wymagam jego przetłumaczenia w celu użycia w scala. Z tego co rozumiem, musimy użyć sqlContext.sql Przykłady dostępne online mają tylko proste instrukcje select.Lub przykład poniżej.Używanie sqlContext.sql do sub-zapytań w scala

Na przykład, aby uruchomić proste zapytanie SQL w Scala:

val tableA = sqlContext.sql("Select * from game"); 

I nie wydaje się używać tej samej składni dla below.What kodu jest składnia przetłumaczyć poniższy kod, aby dopasować powyższe stosowanie.

DROP TABLE ADW.TERA_BARCODE_LOOKUP_TABLE_RAW ; 

    CREATE TABLE ADW.TERA_BARCODE_LOOKUP_TABLE_RAW AS 
    SELECT CAST(BRCDE_REF_I AS STRING) AS BARCODE, 
    MAX(TRIM(GST_SRC_ID)) AS GST_SRC_ID,MAX(SRC_ACTV_TS) AS SRC_ACTV_TS 
    FROM 

(SELECT RANKED.* 
FROM 
(SELECT BRCDE_REF_I,GST_SRC_ID,SRC_ACTV_TS, 
RANK() over (partition by BRCDE_REF_I ORDER BY SRC_ACTV_TS DESC) AS RANK 
FROM 
ADW.GST_SRC_ID_BRCDE_LKUP_TABLE X 
WHERE UPPER(X.CURR_ACTV_F) = 'Y' AND TRIM(X.GST_SRC_ID) IN 
(SELECT TRIM(GST_SRC_I) FROM ADW.CANDIDATE_GST_ID_SRC_TABLE GROUP BY TRIM(GST_SRC_I)) 
) RANKED 
WHERE RANKED.RANK = 1 ) X 
GROUP BY BRCDE_REF_I ; 
+0

Jaki jest błąd? Dodałbym "BEGIN TRAN" i "COMMIT" na początek i koniec kodu mysql i spróbuj go uruchomić ponownie. –

Odpowiedz

2

Istnieją dwa polecenia SQL, a ponieważ Apache Hive doesn't support BEGIN and COMMIT najlepszym rozwiązaniem będzie można umieścić go na dwie komendy.

Nie wysłałeś swojego błędu. Zakładam, że możesz również dostać błąd na DROP TABLE, więc zmienił go na DROP TABLE IF EXISTS.

Ponadto, w Scali, aby używać łańcuchów wielowierszowych, należy zawijać je za pomocą """, a nie ".

sqlContext.sql("DROP TABLE IF EXISTS ADW.TERA_BARCODE_LOOKUP_TABLE_RAW") 
sqlContext.sql(""" 
CREATE TABLE ADW.TERA_BARCODE_LOOKUP_TABLE_RAW AS 
SELECT CAST(BRCDE_REF_I AS STRING) AS BARCODE, 
MAX(TRIM(GST_SRC_ID)) AS GST_SRC_ID,MAX(SRC_ACTV_TS) AS SRC_ACTV_TS 
FROM 
(SELECT RANKED.* 
FROM 
(SELECT BRCDE_REF_I,GST_SRC_ID,SRC_ACTV_TS, 
RANK() over (partition by BRCDE_REF_I ORDER BY SRC_ACTV_TS DESC) AS RANK 
FROM 
ADW.GST_SRC_ID_BRCDE_LKUP_TABLE X 
WHERE UPPER(X.CURR_ACTV_F) = 'Y' AND TRIM(X.GST_SRC_ID) IN 
(SELECT TRIM(GST_SRC_I) FROM ADW.CANDIDATE_GST_ID_SRC_TABLE GROUP BY TRIM(GST_SRC_I)) 
) RANKED 
WHERE RANKED.RANK = 1 ) X 
GROUP BY BRCDE_REF_I 
""") 
Powiązane problemy