hadoop - 如何在Hive脚本中将功能作为S3位置的输入

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

我正在努力做到这一点;

location/11.11
location/12.11
location/13.11

为了做到这一点,我尝试了很多事情,但无法实现。
现在,我有一个Udf配置单元函数,该函数可以向我返回s3表的位置,但是我遇到了一个错误;

ParseException line 1:0 cannot recognize input near '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(); 

最佳答案

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

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

关于hadoop - 如何在Hive脚本中将功能作为S3位置的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214629/

相关文章:

python - Hadoop Streaming 命令失败并出现 Python 错误

javascript - Amazon S3 签名不匹配 - AWS 开发工具包 Java

hadoop - 将表格从Hive复制到HDFS

hadoop - 用于配置单元中简单序列文件的 serde

hadoop - 使用 Impala 显示与记录关联的所有字段

jdbc - 使用CDH4+Cloudera Manager时JDBC驱动放在哪里?

hadoop - 如何在 hadoop 2.5.2 上启动和检查作业历史记录

.net - 亚马逊 S3.net SDK

java - Hadoop MapReduce : using MapWritable as a key

ruby-on-rails - 使用 Fog 和 Carrierwave 上传文件的粒度 'public' 设置