8

HIVEの使用を開始してから数百Gigsを追加したいとします。私が見たさまざまな記事やページから、次の点での結果を理解できません

  • 必要な収納スペース(2倍?)
  • ブロッキング (他のプロセスでテーブルを読み取ることはできますか) ?
  • 時間 (MySQL の変更と同じくらい速いですか、それとも遅いですか?)
  • 基礎となるストレージ (基礎となるすべてのファイルを変更する必要がありますか? RCFile を使用してどのように行うことができますか?)

HIVE 列の構造体に関する同じ質問に回答できる人へのボーナス。

4

3 に答える 3

12

ハイブ テーブルに列を追加すると、基になるメタストアのみが更新されます。

  • データを追加しない限り、必要なストレージ容量は増加しません
  • 変更は、他のプロセスがテーブルにアクセスしている間に行うことができます
  • 変更は非常に迅速です (基になるメタストアのみが更新されます)。
  • 基になるファイルを変更する必要はありません。既存のレコードの新しい列の値は null です

これが役立つことを願っています。

于 2011-02-23T06:45:34.723 に答える
4

ALTER TABLE コマンドは METADATA のみを変更します。基になるデータは変更されません。ただし、変更によってデータの一貫性が損なわれないようにすることは、ユーザーの責任です。

また、METADATA への変更はメタストア (最も一般的には MySQL) に適用されます。この場合、応答時間は同等です。

于 2013-06-14T00:27:29.457 に答える
1

定義を変更すると、ファイルの読み取り方法のみが変更され、基になるファイルの内容は変更されません。

ファイルが 3 列のタブ区切りテキストである場合、タブ文字に基づいて列を解析せずに行全体を読み取る new_table(line STRING) のようなスキームを使用して、これらのファイルを参照するテーブルを作成できます。

Helmutが述べたように、列を追加すると、レコードに区切り文字がなくなるため、デフォルトでNULLになります。

于 2012-01-30T23:11:42.350 に答える