Spark-UDFでハイブクエリを書くことはできますか? 例えば、私は2つのテーブルれている: Table A and BSpark-UDFでハイブクエリを書くことができます
b1はAの列名が含まれており、b2はA. にその列の値が含まれている今、私は以下のように結果を得るような方法でテーブルを照会します: Result。
基本的に、列名とそれに対応する値に基づいて、Aの列の値をBに置き換えます。今、私のメインのクエリは
val result = sqlContext.sql("select a1 , conv('a2',a2), conv('a3',a3)");
結果をIS-
sqlContext.udf.register("conv",convert(_:String,_:String));
:私のようにそれを登録し
def convert(colname: String, colvalue:String)={
以下
sqlContext.sql("SELECT b3 from B where b1 = colname and b2 = colvalue").toString; }
として変換します。私は火花UDFなどを書いたことを実現するために 。 take(2);
それは私にjava.lang.NullPointerExceptionを与えます。
この機能がスパーク/ハイブでサポートされている場合は、誰かがお勧めしますか? 他の方法も歓迎します。 ありがとう!
UDFの内部でsqlContextを使用することはできません –
ありがとうございます。 – MGM