如何在hive脚本中为s3位置提供函数作为输入

时间:2013-11-26 10:35:50

标签: hadoop amazon-s3 hive user-defined-functions

我正在努力做到这一点;

location/11.11
location/12.11
location/13.11

为了做到这一点,我尝试了许多事情,但却无法实现。 现在我有一个Udf配置单元功能,它返回s3表的位置,但我面临一个错误;

  

ParseException行1:0无法识别'LOCATION'附近的输入   'datenow''('LOCATION datenow(); NoViableAltException(143 @ [])

这是我的hive脚本,我有两个外部表。

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(); 

2 个答案:

答案 0 :(得分:1)

LOCATION接受字符串,而不是UDF。语言手册有点不清楚,因为它只指定[LOCATION hdfs_path]并且hdfs_path未定义,但它只能是一个URL位置路径,一个字符串。通常,在DDL上下文中不接受UDF。

使用任何选择的文本工具构建脚本并运行该脚本。

答案 1 :(得分:0)

我是这样管理的,

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