我正在hvie
上运行EMR
脚本,该脚本从s3
键中提取数据。我可以获得所有数据并将其放入表格中。问题是,我需要的一些数据是密钥名称。如何从hive
中获取密钥名称并将其放入hive
表中?
答案 0 :(得分:1)
我最近遇到了类似的问题。根据我的研究,这取决于。您可以从"目录中获取数据"部分但不是"文件名" s3键的一部分。
如果s3键格式正确,您可以使用partition
。可以使用与列相同的方式查询partition
。这是一个包含一些示例的链接:Loading data with Hive, S3, EMR, and Recover Partitions
如果s3文件已正确分组,您也可以自己指定分区。例如,我需要日期信息,所以我的脚本看起来像这样:
create external table Example(Id string, PostalCode string, State string)
partitioned by (year int, month int, day int)
row format delimited fields terminated by ','
tblproperties ("skip.header.line.count"="1");
alter table Example add partition(year=2014,month=8,day=1) location 's3n://{BuckeyName}/myExampledata/2014/08/01/';
alter table Example add partition(year=2014,month=8,day=2) location 's3n://{BuckeyName}/myExampledata/2014/08/02/';
...keep going
partition
数据必须是"目录名称的一部分"而不是"文件名"因为Hive从目录加载数据。
如果您需要从文件名中读取一些文本,我认为您必须创建自定义程序以重命名对象,以便您需要的文本位于"目录名称"。
祝你好运!