如何在配置单元脚本中为s3位置提供一个函数作为输入

s5a0g9ez  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(260)

我正在努力做到这一点;

location/11.11
location/12.11
location/13.11

为了做到这一点,我尝试了很多事情,但都没有成功。现在我有一个udf hive函数,它返回s3表的位置,但是我面临一个错误;
parseexception行1:0无法识别“location”“datenow”(“location datenow()”)附近的输入;新异常(143@[])
这是我的配置单元脚本,我有两个外部表。

CREATE TEMPORARY FUNCTION datenow AS 'LocationUrlGenerator';
CREATE EXTERNAL TABLE IF NOT EXISTS s3( file Array<String>)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY '\001' LINES TERMINATED BY '\n';
LOCATION datenow();
vd2z7a6w

vd2z7a6w1#

LOCATION 接受字符串,而不是自定义项。语言手册有点不清楚,因为它只规定 [LOCATION hdfs_path] 然后离开 hdfs_path 未定义,但它只能是url位置路径、字符串。一般来说,UDF在ddl上下文中是不可接受的。
使用所选的任何文本工具构建脚本并运行该脚本。

shstlldc

shstlldc2#

我就是这么做的,

INSERT INTO TABLE S3
PARTITION(time)
SELECT  func(json),from_unixtime(unix_timestamp(),'yyyy-MM-dd') AS time FROM tracksTable;

相关问题