【发布时间】:2021-09-05 18:06:26
【问题描述】:
比如我们用Spark引擎执行下面的SQL,我们需要my_udf(row)
返回 Spark 中的分区 id。
add jar hdfs:///dir/udf/udf.jar;
create temporary function my_udf as 'com.my.MyUDF';
select row, my_udf(row) from table;
我知道如何在 MR 引擎中执行 Hive UDF 中的 taskId:How to get the taskID or mapperID(something like partitionID in Spark) in a hive UDF?,但在 Spark 引擎中执行时无效。请告诉我如何在 Hive UDF 中获取 Spark 的 partitionID 或 taskContext,非常感谢!
【问题讨论】:
-
UDF 无权访问 Spark 的内部。如果您的数据在数据集中,您可以使用
spark_partition_id函数。 -
@kanielc 你的意思是没有办法在 Hive UDF 中获取 Spark taskContext ?
-
我自己有正确答案,看这里:stackoverflow.com/questions/68079180/…
标签: apache-spark hive apache-spark-sql user-defined-functions