9

Amazon EMR でハイブ スクリプトを使用してデータを分析しています。

そして、出力を Amazon s3 バケットに転送しています。現在、ハイブ スクリプトの結果には列ヘッダーが含まれていません。

私もこれを使ってみました:

 set hive.cli.print.header=true;

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

4

4 に答える 4

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
于 2014-11-08T15:56:10.473 に答える
3

その直接的な方法はまだ不可能だと思います ( HIve: 列ヘッダーをローカル ファイルに書き込みますか? )。いくつかの解決策は、結果DESCRIBE table_nameをファイルにエクスポートすることです。

$ hive -e 'DESCRIBE table_name' > file

そして、列名をデータ ファイルに追加するスクリプトを記述します。GL!

于 2013-03-01T08:43:02.753 に答える
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 つのクエリで必要なものを取得できます。

お役に立てれば!

于 2014-08-09T01:44:07.630 に答える
-1

単なるタイプミス (またはバージョン依存の変更) かもしれませんが、次のようにするとうまくいきます。

set hive.cli.print.headers=true;

「ヘッダー」ではなく「ヘッダー」です

于 2017-01-10T15:54:36.203 に答える