2016-07-13 7 views
0

私はクエリで呼び出されるpostgres関数を持っています。このサンプルへの類似した:Postgres関数をImpala UDFまたはSparkの関数に変換する

CREATE OR REPLACE FUNCTION test_function(id integer, dt date, days int[], accts text[], flag boolean) RETURNS float[] AS $$ 
    DECLARE 
    pt_dates date[]; 
    pt_amt integer[]; 
    amt float[]; 
    BEGIN 
    if cleared then 
     pt_dates := array(select dt from tabl); 
     pt_amt := array(select amt from tab1); 
     if array_upper(days, 1) is not null then 
     for j in 1 .. array_upper(days, 1) 
     loop 
     amt+=amt; 
     end loop; 
     end if; 
     return amt; 
    END; 
$$ LANGUAGE plpgsql; 

私はそれを行うための最善の方法であるデータ湖沼環境への内にこれを変換したい場合は?インパラUDF? Spark UDF?またはハイブUDF? Impala UDFでは、どのようにインパラデータベースにアクセスできますか?私がSpark UDFを書くことができれば、私はそれをimpala-shellで使うことができますか?

お知らせください。

答えて

0

1件の投稿に多くの質問があります。だから私はSparkに関連する質問だけを選んでいます。

実行するデータ処理を表すこのSQLクエリがあります。

  1. がマスターに
  2. SSHを、データのいくつかの量を取りAWS EMRにS3
  3. 行くためにそれを移動し、新しいクラスタを作成します。ここでは

    は、Sparkでこれを行うには、一般式でありますそれが開始された後、あなたはmap機能でそれにスキーマを適用するrdd = sc.readText("s3://path/to/your/s3/buckets/")
  4. を経由してあなたのS3のデータを読み込むことができますpysparkコンソール
  5. をノード、および実行
  6. rdd2dataframeに変換し、それを新しいvarとして保存します。 rdd2DF = rdd2.toDF()
  7. は、SQLクエリを記述し、その結果保存すること
  8. rdd2DF.registerTempTable('newTableName')を実行します。output = sqlContext.sql("SELECT a,b,c FROM newTableName")
  9. を出力を示しています。output.show()

今、私は、これは文字通り、特定の答えであるには余りにも高レベルである知っていますあなたの質問に、私はちょうど言ったすべての非常にgoogle'ableです。

これは、SQLクエリを使用して多くのデータを処理するために、SparkおよびSparkSQLでEMRを活用するCompute and Storageの分離シナリオの例です。

関連する問題