2013-02-28 10 views
9

Amazon EMRでハイブスクリプトを使用してデータを分析しています。ハイブの結果セットにカラムヘッダーを追加する

そして出力をAmazon S3バケットに転送しています。ハイブスクリプトの結果には列見出しが含まれていません。

また、私は、この使用して試してみました:

set hive.cli.print.header=true; 

をしかし、それは助けにはなりません。あなたは私を助けることができます?

+0

の「ヘッダは、」あなたは列のヘッダーがちょうどコマンドラインインタフェースでそれらを参照してくださいいくつかの出力ファイルに含まれますかの? – www

+0

@Wawrzniec出力ファイルに出力します。 – Sam

答えて

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 

少し嵩張りますが、少なくとも1つのクエリで必要なものを得ることができます。

希望すると便利です。

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 

は、それはちょうどかもしれない

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

こんにちは、 sqoopはOracleからデータを取得しますが、スキーマ/ヘッダーは取得しません。私はヘッダーとしてスキーマを取得したい。たとえば、 名前、年齢、場所 venu、31、Banlgaore srinu、32、ハイデラバード ..... llike this。ヘッダーの形式でスキーマを取得する方法。この形式とは異なります。 OracleからS3へ(sqoopで)、..上記のようなs3へのローカル..ではありません。 –

0

あなたのS3バケットへのあなたの出力をコピータイプミス(またはバージョンに応じた変更)がありますが、私にとっては以下のように動作します:

set hive.cli.print.headers=true; 

代わりに「ヘッダ」

関連する問題