我已经写了一个UDF,确切地说是通用UDF。此UDF使用AES算法加密列。该UDF需要一些参数才能读取以连接到外部RDS表。因此,我认为使用属性文件并从文件系统(而非类路径)中读取文件是个好主意。
现在使用此设置。如果我仅使用select
运行UDF,它就可以工作。即以下正在工作
select encrypt(name) from emp;
但是,如果我应用任何聚合函数或使用不同的聚合函数,它将失败。
select distinct encrypt(name) from emp;
我意识到,在不同的时间内,它无法读取property file
,并且位于本地文件系统上。当我更改为从class path
读取时,两个查询均有效。
所以我的问题是:
当我从本地文件系统读取属性文件时,为什么第一个查询有效?它也不应该失败吗?