hive分区(partition)简介
网上有篇关于hive的partition的使用讲解的比较好,转载了: 一、背景 1、在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。 2、分区表指的是在创建表时指定
网上有篇关于hive的partition的使用讲解的比较好,转载了:
一、背景
1、在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。
2、分区表指的是在创建表时指定的partition的分区空间。
3、如果需要创建有分区的表,需要在create表的时候调用可选参数partitioned by,详见表创建的语法结构。
二、技术细节
1、一个表可以拥有一个或者多个分区,每个分区以文件夹的形式单独存在表文件夹的目录下。
2、表和列名不区分大小写。
3、分区是以字段的形式在表结构中存在,通过describe table命令可以查看到字段存在,但是该字段不存放实际的数据内容,仅仅是分区的表示。
4、建表的语法(建分区可参见PARTITIONED BY参数):
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path]
5、分区建表分为2种,一种是单分区,也就是说在表文件夹目录下只有一级文件夹目录。另外一种是多分区,表文件夹下出现多文件夹嵌套模式。
a、单分区建表语句:create table day_table (id int, content string) partitioned by (dt string);单分区表,按天分区,在表结构中存在id,content,dt三列。
b、双分区建表语句:create table day_hour_table (id int, content string) partitioned by (dt string, hour string);双分区表,按天和小时分区,在表结构中新增加了dt和hour两列。
表文件夹目录示意图(多分区表):
6、添加分区表语法(表已创建,在此基础上添加分区):
ALTER TABLE table_name ADD partition_spec [ LOCATION 'location1' ] partition_spec [ LOCATION 'location2' ] ... partition_spec: : PARTITION (partition_col = partition_col_value, partition_col = partiton_col_value, ...)
用户可以用 ALTER TABLE ADD PARTITION 来向一个表中增加分区。当分区名是字符串时加引号。例:
ALTER TABLE day_table ADD PARTITION (dt='2008-08-08', hour='08') location '/path/pv1.txt' PARTITION (dt='2008-08-08', hour='09') location '/path/pv2.txt';
7、删除分区语法:
ALTER TABLE table_name DROP partition_spec, partition_spec,...
用户可以用 ALTER TABLE DROP PARTITION 来删除分区。分区的元数据和数据将被一并删除。例:
ALTER TABLE day_hour_table DROP PARTITION (dt='2008-08-08', hour='09');
8、数据加载进分区表中语法:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
例:
LOAD DATA INPATH '/user/pv.txt' INTO TABLE day_hour_table PARTITION(dt='2008-08- 08', hour='08'); LOAD DATA local INPATH '/user/hua/*' INTO TABLE day_hour partition(dt='2010-07- 07');
当数据被加载至表中时,不会对数据进行任何转换。Load操作只是将数据复制至Hive表对应的位置。数据加载时在表下自动创建一个目录,文件存放在该分区下。
9、基于分区的查询的语句:
SELECT day_table.* FROM day_table WHERE day_table.dt>= '2008-08-08';
10、查看分区语句:
hive> show partitions day_hour_table; OK dt=2008-08-08/hour=08 dt=2008-08-08/hour=09 dt=2008-08-09/hour=09
三、总结
1、在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在最字集的目录中。
2、总的说来partition就是辅助查询,缩小查询范围,加快数据的检索速度和对数据按照一定的规格和条件进行管理。
——————————————————————————————————————
hive中关于partition的操作:
hive> create table mp (a string) partitioned by (b string, c string);
OK
Time taken: 0.044 seconds
hive> alter table mp add partition (b='1', c='1');
OK
Time taken: 0.079 seconds
hive> alter table mp add partition (b='1', c='2');
OK
Time taken: 0.052 seconds
hive> alter table mp add partition (b='2', c='2');
OK
Time taken: 0.056 seconds
hive> show partitions mp ;
OK
b=1/c=1
b=1/c=2
b=2/c=2
Time taken: 0.046 seconds
hive> explain extended alter table mp drop partition (b='1');
OK
ABSTRACT SYNTAX TREE:
(TOK_ALTERTABLE_DROPPARTS mp (TOK_PARTSPEC (TOK_PARTVAL b '1')))
STAGE DEPENDENCIES:
Stage-0 is a root stage
STAGE PLANS:
Stage: Stage-0
Drop Table Operator:
Drop Table
table: mp
Time taken: 0.048 seconds
hive> alter table mp drop partition (b='1');
FAILED: Error in metadata: table is partitioned but partition spec is not specified or tab: {b=1}
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
hive> show partitions mp ;
OK
b=1/c=1
b=1/c=2
b=2/c=2
Time taken: 0.044 seconds
hive> alter table mp add partition ( b='1', c = '3') partition ( b='1' , c='4');
OK
Time taken: 0.168 seconds
hive> show partitions mp ;
OK
b=1/c=1
b=1/c=2
b=1/c=3
b=1/c=4
b=2/c=2
b=2/c=3
Time taken: 0.066 seconds
hive>insert overwrite table mp partition (b='1', c='1') select cnt from tmp_et3 ;
hive>alter table mp add columns (newcol string);
location指定目录结构
hive> alter table alter2 add partition (insertdate='2008-01-01') location '2008/01/01';
hive> alter table alter2 add partition (insertdate='2008-01-02') location '2008/01/02';

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック








![[Linuxシステム] fdisk関連のパーティションコマンド。](https://img.php.cn/upload/article/000/887/227/170833682614236.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
fdisk は、ディスク パーティションの作成、管理、変更によく使用される Linux コマンド ライン ツールです。一般的に使用される fdisk コマンドの一部を次に示します。 ディスク パーティション情報の表示: fdisk-l このコマンドは、システム内のすべてのディスクのパーティション情報を表示します。操作したいディスクを選択します: fdisk/dev/sdX /dev/sdX を、/dev/sda など、操作したい実際のディスクデバイス名に置き換えます。新しいパーティションの作成:nこれにより、新しいパーティションを作成することができます。プロンプトに従って、パーティションのタイプ、開始セクター、サイズ、その他の情報を入力します。パーティションの削除:d これにより、削除するパーティションを選択することができます。プロンプトに従って、削除するパーティション番号を選択します。パーティション タイプの変更: タイプを変更するパーティションを選択するためのガイドが表示されます。言及によると

win10 オペレーティング システムを再インストールしたとき、ディスクのパーティション分割の段階で、新しいパーティションを作成できず、既存のパーティションが見つからないというメッセージが表示されることがわかりました。この場合、ハードディスク全体を再フォーマットしてパーティションにシステムを再インストールするか、ソフトウェアなどを介してシステムを再インストールしてみるとよいと思います。編集者が特定のコンテンツに対してどのように行ったかを見てみましょう~お役に立てれば幸いです。 win10 インストール後、新しいパーティションを作成できない場合の対処方法 方法 1: ハードディスク全体をフォーマットしてパーティションを再作成するか、USB フラッシュ ドライブを数回抜き差しして更新してみてください ハードディスク上に重要なデータがない場合パーティション分割の段階では、ハードディスク上のすべてのデータを削除します。パーティションは削除されます。ハードドライブ全体を再フォーマットし、パーティションを再分割して、通常どおりインストールします。方法 2:P

オブジェクト リレーショナル マッピング (ORM) フレームワークは、Python 開発において重要な役割を果たします。オブジェクト データベースとリレーショナル データベースの間にブリッジを構築することで、データ アクセスと管理を簡素化します。さまざまな ORM フレームワークのパフォーマンスを評価するために、この記事では次の一般的なフレームワークに対してベンチマークを実行します。 sqlAlchemyPeeweeDjangoORMPonyORMTortoiseORM テスト方法 ベンチマークでは、100 万レコードを含む SQLite データベースを使用します。テストでは、データベースに対して次の操作を実行しました。 挿入: テーブルに 10,000 件の新しいレコードを挿入します。 読み取り: テーブル内のすべてのレコードを読み取ります。 更新: テーブル内のすべてのレコードの 1 つのフィールドを更新します。 削除: テーブル内のすべてのレコードを削除します。 各操作

この記事では、Windows 11/10でWinREパーティションのサイズを変更または増やす方法を説明します。 Microsoft は、Windows 11 バージョン 22H2 から、毎月の累積的な更新プログラムとともに Windows 回復環境 (WinRE) を更新します。ただし、すべてのコンピュータに新しい更新を収容できる十分な大きさの回復パーティションがあるわけではないため、エラー メッセージが表示される可能性があります。 Windows 回復環境サービスが失敗しました Windows 11 で WinRE パーティション サイズを増やす方法 コンピューター上で WinRE パーティション サイズを手動で増やすには、以下の手順に従います。 WinRE を確認して無効にする OS パーティションを縮小する 新しい回復パーティションを作成する パーティションを確認して WinRE を有効にする

Linux Opt パーティションのセットアップ方法とコード例 Linux システムでは、通常、Opt パーティションはオプションのソフトウェア パッケージとアプリケーション データを保存するために使用されます。 Opt パーティションを適切に設定すると、システム リソースを効果的に管理し、ディスク容量不足などの問題を回避できます。この記事では、LinuxOpt パーティションのセットアップ方法を詳しく説明し、具体的なコード例を示します。 1. パーティションのスペース サイズを決定する まず、Opt パーティションに必要なスペース サイズを決定する必要があります。一般に、Opt パーティションのサイズをシステム領域全体の 5%-1 に設定することをお勧めします。

オブジェクト リレーショナル マッピング (ORM) は、開発者が SQL クエリを直接記述せずにオブジェクト プログラミング言語を使用してデータベースを操作できるようにするプログラミング テクノロジです。 Python の ORM ツール (SQLAlchemy、Peeweee、DjangoORM など) は、ビッグ データ プロジェクトのデータベース操作を簡素化します。利点 コードの単純さ: ORM により、長い SQL クエリを作成する必要がなくなり、コードの単純さと読みやすさが向上します。データの抽象化: ORM は、アプリケーション コードをデータベース実装の詳細から分離する抽象化レイヤーを提供し、柔軟性を向上させます。パフォーマンスの最適化: ORM は多くの場合、キャッシュとバッチ操作を使用してデータベース クエリを最適化し、それによってパフォーマンスを向上させます。移植性: ORM により、開発者は次のことが可能になります。

多くのユーザーは、システムのデフォルトのパーティション領域が小さすぎると感じていますが、Win11 でハードディスクをパーティション分割するにはどうすればよいですか?ユーザーは、このコンピュータの管理を直接クリックし、次にディスクの管理をクリックして動作設定を行うことができます。このサイトでは、Win11 でハード ドライブをパーティション分割する方法に関する詳細なチュートリアルをユーザーに提供します。 win11 でハードディスクをパーティション分割する方法に関するチュートリアル 1. まず、このコンピューターを右クリックし、コンピューターの管理を開きます。 3. 次に、右側のディスクのステータスをチェックして、利用可能なスペースがあるかどうかを確認します。 (空き容量がある場合は、手順 6 に進みます)。 5. 次に、解放する必要があるスペースの量を選択し、「圧縮」をクリックします。 7. 希望するシンプル ボリューム サイズを入力し、[次へ] をクリックします。 9. 最後に、「完了」をクリックして新しいパーティションを作成します。

Deepin Linux をインストールする前に、ハードディスクをパーティション分割する必要があります。ハードディスクのパーティション分割は、物理ハードディスクを複数の論理領域に分割するプロセスです。各領域は独立して使用および管理できます。正しいパーティション分割方法により、パフォーマンスとパフォーマンスが向上します。システムの安定性のため、このステップは非常に重要です。この記事では、Linux ハードディスクのパーティション分割とインストールに関する詳細かつ詳細なチュートリアルを提供します。準備 1. パーティション分割プロセスによりハードドライブ上のすべてのデータが消去されるため、重要なデータを必ずバックアップしてください。 2. USB フラッシュ ドライブや CD などの Deepin Linux インストール メディアを準備します。ハードディスク パーティション 1. BIOS 設定を起動し、ブート メディアを優先ブート デバイスとして設定します。 2. コンピュータを再起動し、ブート メディアから起動して、システム インストール インターフェイスに入ります。 3.選択
