2016-01-06 1 views
6

以下のHIVEコードを作成し、それをscalaで使用するために翻訳する必要があります。私が使用する必要があることを理解してからsqlContext.sql オンラインで利用できる例は、単純なselect文だけです。以下の例のように。スカラーのサブクエリのためにsqlContext.sqlを使用する

の例では、Scalaでは、単純なSQLクエリを実行するには:

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

私はコードbelow.Whatのための同じ構文を使用するように見えることはできませんが、上記に合わせて以下のコードを変換する構文です使用法。

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

エラーは何ですか? mysqlコードの最初と最後に 'BEGIN TRAN'と' COMMIT'を追加して、もう一度実行しようとします。 –

答えて

2

は、2つのSQLコマンドがあり、およびApache Hiveのdoesn't support BEGIN and COMMIT最良の選択肢ので、次の2つのコマンドにそれを置くことになりますため。

あなたはあなたのエラーを投稿していません。 DROP TABLEにもエラーがあると思われたので、DROP TABLE IF EXISTSに変更しました。

また、複数行の文字列を使用する場合は、"""ではなく、"で囲む必要があります。

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 
""") 
関連する問題