【发布时间】:2017-11-09 14:47:21
【问题描述】:
我们可以在 Spark - UDF 中编写一个配置单元查询吗? 例如,我有 2 张桌子: Table A and B
其中 b1 包含 A 的列名,b2 包含 A 中该列的值。 现在我想以这样的方式查询表,得到如下结果: Result.
基本上根据列名及其对应值将A中列的值替换为B。 为了实现这一点,我编写了 spark-UDF eg:convert 如下
def convert(colname: String, colvalue:String)={
sqlContext.sql("SELECT b3 from B where b1 = colname and b2 = colvalue").toString;
}
我注册为:
sqlContext.udf.register("conv",convert(_:String,_:String));
现在我的主要查询是 -
val result = sqlContext.sql("select a1 , conv('a2',a2), conv('a3',a3)");
结果.take(2);
它给了我 java.lang.NullPointerException。
有人可以建议 spark/hive 是否支持此功能。 也欢迎任何其他方法。 谢谢!
【问题讨论】:
-
你不能在 UDF 中使用 sqlContext
-
感谢您的意见。
标签: scala apache-spark hive user-defined-functions