2013-02-28 84 views
9

我在Amazon EMR上使用配置单元脚本来分析一些数据。将列标题添加到配置单元结果集

我将输出传输到Amazon s3存储桶。现在,配置单元脚本的结果不包含列标题。

我一直在使用,这也试过:

set hive.cli.print.header=true; 

但它并不能帮助。你能帮我吗?

+0

你要列入只是看到他们在命令行界面的一些输出文件列标题“头”? – www 2013-03-01 01:11:49

+0

@Wawrzniec我希望他们在输出文件。 – Sam 2013-03-01 02:43:09

回答

3

我想直接的方式仍然是不可能的(HIve: writing column headers to local file?)。 一些解决方案将是DESCRIBE table_name导出结果到文件:

$ hive -e 'DESCRIBE table_name' > file 

编写一些脚本添加列名到您的数据文件。 GL!

2

我今天遇到了这个问题,并能够通过在原始查询和创建标题行的新的虚拟查询之间执行UNION ALL来获得所需的内容。我在每个部分添加了一个排序列,并将标题设置为0,将数据设置为1,以便我可以按该字段进行排序,并确保标题行排在最前面。

create table new_table as 
select 
    field1, 
    field2, 
    field3 
from 
(
    select 
    0 as sort_col, --header row gets lowest number 
    'field1_name' as field1, 
    'field2_name' as field2, 
    'field3_name' as field3 
    from 
    some_small_table --table needs at least 1 row 
    limit 1 --only need 1 header row 
    union all 
    select 
    1 as sort_col, --original query goes here 
    field1, 
    field2, 
    field3 
    from 
    main_table 
) a 
order by 
    sort_col --make sure header row is first 

这是有点笨重,但至少你可以得到你需要的一个单一的查询。

希望这会有所帮助!

8

您的配置单元脚本是什么样子的?

您的配置单元脚本的输出是否包含标题数据?当您将输出复制到s3存储桶时,它是否会丢失?

如果你可以提供一些关于你正在做什么的更多细节会有所帮助。

不知道这些细节,这里是你可以尝试的东西。

创建您的蜂巢脚本如下:

USE dbase_name: 
SET hive.cli.print.header=true; 
SELECT some_columns FROM some_table WHERE some_condition; 

然后运行脚本:

$ hive -f hive_script.hql > hive_output 

您的输出然后复制到您的S3存储

$ aws s3 cp ./hive_output s3://some_bucket_name/foo/hive_output 
+0

嗨, sqoop从oracle获取数据,但不是schema/headers。我想将模式作为标题。例如 姓名,年龄,地点 venu,31,Banlgaore srinu,32,Hyderabad ..... llike this。如何以标题的形式获取模式,而不是像这种格式。 Oracle到S3(在sqoop中),..不是以本地..到s3类似上面的格式。 – 2016-04-20 07:06:53

0

这可能只是一个错字(或版本相关的更改),但以下作品适用于我:

set hive.cli.print.headers=true; 

这是不是“头”