「Hive データ ウェアハウスアプリケーション」放課後演習
ハイブの紹介
1.空白を埋める
1. データ ウェアハウスの目的は、分析指向の統合データ環境を構築することです。
2. Hive は、Hadoopに基づくデータ ウェアハウス ツールです。
3. データ ウェアハウスは、ソース データ層、データ アプリケーション層、データ ウェアハウス層の 3 つの層に分かれています。
4. データ ウェアハウス レイヤーは、中間レイヤー、詳細レイヤー、ビジネス レイヤーに再分割できます。
5. データ ウェアハウスの構築では、データ モデルは通常、スターモデルとスノーフレークモデルを中心に設計されます。
2. 判断に関する質問
1. データ ウェアハウスは、アプリケーションとデータベースをビジネス プロセスごとに分割します。( × )
2. データ ウェアハウス内のデータは通常、めったに更新されません。(√)
3. データ ウェアハウス モデルのスター モデルとスノーフレーク モデルは両方ともディメンション モデリングに属します。(√)
4. Hive は、非構造化データ ファイルをデータ テーブルにマップできます。( × )
5. トランザクションは Hive 0.14 以降でサポートされています。(√)
3. 多肢選択問題
1. 以下の選択肢のうち、データウェアハウスの特徴は(C)です。
A.オブジェクト指向
B.処方
C.データ統合
D.データ指向
2. 次のオプションのうち、データ Hive アーキテクチャの一部ではないものはどれですか? (D)
A.コンパイラ
B.オプティマイザー
C.リサイクルサーバー
HiveServer2
3. 次の選択肢のうち、Hive の動作原理に関する記述は間違っています (A)。
A.ドライバーは必要なメタデータ情報を MetaStore から取得します。
B.ドライバーはコンパイラーにリクエストを送信してプランを取得します
C.ドライバーが実行計画を実行エンジンに送信します
D.実行エンジンは、HDFS および MapReduce との通信を担当します。
4. 以下のオプションのうち、Hive でサポートされていないコレクション データ型は (C) です。
A.アレイ
B.MAP
C.リスト
D.構造体
4. 短答式の質問
1. データ ウェアハウス階層化のソース データ レイヤー、データ ウェアハウス レイヤー、データ アプリケーション レイヤーの実行プロセスを簡単に説明します。
回答:まず、ソース データ レイヤーで収集および保存されたデータは、クリック ストリーム データ、データベース データ、ドキュメント データなどのさまざまなデータ ソースから取得され、次に、クリーンアップおよび変換されたデータが ETL を通じてデータ ウェアハウス レイヤーにロードされ、最後に、 、データアプリケーション層 実際の業務ニーズに応じてデータウェアハウス層のデータを取得し、レポート表示、データ分析、データマイニングなどの業務を実現します。
ハイブの展開
1.空白を埋める
1. 仮想マシンのクローンを作成する場合、元の仮想マシンとリソースをまったく共有しないクローンは完全なクローンです。
2. ネットワーク カードを静的ルーティング プロトコルとして設定した後、パラメータ DNS1、IPADDR、GATEWAY、およびNETMASKを追加する必要があります。
3. キー ファイル id_rsa と id_rsa.pub は、それぞれ秘密キーファイルと公開キーファイルです。
4. Centos7 がシステム環境を初期化するコマンドは _ vi /etc/sysconfig/network-scripts/ifcfg-ens33です。
5. Zookeeper クラスター内のサーバーの数を計画する式は2n+1です。
2. 判断に関する質問
1. Zookeeper クラスターには複数のフォロワーとリーダーが存在できます。(F)
2. 2888 は、リーダー選出プロセス中の投票通信ポートを表します。(F)
3. Hadoop の高可用性クラスターには、2 つの NameNode と 2 つの ResourceManager が必要です。(た)
4. Hive を埋め込みモードで実行すると、メタデータ ファイルが現在のディレクトリに生成されます。(た)
5. HiveServer2 サービスを開始すると、デフォルトで Metastore サービスも開始されます。(た)
3. 多肢選択問題
1. 以下のオプションのうち、Zookeeper サービスを正しく開始するコマンドは (C) です。
A.zkServer.shを起動する
B.飼育員を開始する
zkServer.sh 起動
D.zookeeper.sh を起動する
2. 次のオプションのうち、Hadoop 高可用性クラスター プロセスに属さないものはどれですか? (D)
DFZKFailoverController
ジャーナルノード
クォーランピアメイン
D.マスター
3. 次のオプションのうち、Hive のデプロイに関する正しい記述は (B) です。
A.ローカル モードでデプロイされた Hive はメタデータ共有をサポートしていません
B.リモート モードでデプロイされた Hive はメタデータ共有をサポートします
C.HiveServer2 はマルチクライアント接続をサポートしていません
D.Hive クライアント ツール Beeline は、個別に開始された Metastore サービスにリモートで接続できます。
4. 短答式の質問
1. SSH サービスの機能を簡単に説明します。
(1) リモート接続ツールを介して仮想マシンに接続し、仮想マシンの操作を容易にします。
(2) キーフリーログイン機能を実現することで、クラスタサービスの継続稼働に影響を与えるクラスタ内の各ノードへのアクセスが集中した場合に、パスワードの入力を省略できます。
5. 操作に関する質問
1. ホスト名変更コマンドを使用して、仮想マシン Node_01 のホスト名を hello に変更します。
hostnamectl set-ホスト名 hello
Hive のデータ定義言語
1.空白を埋める
1. Hive を操作する場合、使用されるデフォルトのデータベースはdefaultです。
2. データベースとデータベース内のテーブルを同時に削除する必要がある場合は、データベースを削除するステートメントにCASCADEを追加する必要があります。
3. パーティショニングは主に、ビジネス要件に従ってテーブルのデータ全体を複数のサブディレクトリに分割して保存することであり、各サブディレクトリは パーティション に対応します。
4. インデックス作成は、スペースを__time____と交換する方法です。
5. 一時テーブルは現在のセッションでのみ表示され、データはユーザーの ____temporary_____ディレクトリに保存され、セッションの終了時に削除されます 。
2. 判断に関する質問
1. 外部テーブルを削除すると、外部テーブルのメタデータとデータ ファイルも一緒に削除されます。(F)
2. テーブル構造情報の構文を表示する場合、DESCRIBE は DESC よりも詳細です。(F)
3. パーティション テーブルのパーティション フィールドの名前は、パーティション テーブルの列名と同じにすることはできません。(た)
4. バケット テーブルは、複数の列に基づいてバケット化できます。(F)
3. 多肢選択問題
1. 以下のオプションのうち、Hive の組み込み Serde に属さないものは (A) です。
A.フィールド終了者
B. 収集品の終了
C. MAP KYS 終了者
D. NULL の定義
2. 以下のオプションのうち、Hiveバケットテーブルに関する以下の記述が誤りです(C)。
A.ソート列を指定せずにバケットテーブルを作成できます
B.バケット テーブルはパーティション テーブルと同時に使用できません
C.バケットの数によって、バケット テーブルのストレージ ディレクトリに生成される小さなファイルの数が決まります。
D.バケット テーブル内のバケットを指定する列は、並べ替えられた列と一致している必要があります。
3. 次の選択肢のうち、ビューに関する誤った記述は (B) です。
A.ビューは読み取り専用です
B.ビューにはデータ ファイルが含まれています
C.ビューの作成時に列のデータ型を指定できません
D.ビューはクエリ ステートメントで作成されます
4. 短答式の質問
1. インデックスを使用してテーブル データ全体のスキャンを回避する方法を簡単に説明します。
インデックス列をクエリする場合、最初にインデックス テーブルに移動して、HDFS 内のインデックス列の値に対応するデータ ファイル パスとデータ ファイル内のインデックス列の値のオフセットを検索し、これら 2 つの値を使用します。データの一部であるテーブル全体をスキャンするため、テーブル全体のスキャンが回避されます。
5. 操作に関する質問
1. データベース hive_database に外部テーブル external_test を作成します。外部テーブル external_test の構造要件は次のとおりです。
(1) データファイルの保存場所は /test/hive/external_test である必要があります。
(2) 外部表 external_test には 5 つの列が含まれており、この 5 つの列のデータ型は STRING、INT、FLOAT、ARRAY、MAP であり、列名はカスタマイズされています。
(3) データ型がARRAYの列の要素のデータ型をSTRINGに指定します。
(4) データ型が MAP として指定された列のキーと値のペア KEY:VALUE のデータ型は STRING:INT です。
答え:
CREATE TABLE IF NOT EXISTS
hive_database.external_test(
col1 INT,
col2 STRING,
col3 FLOAT,
col4 ARRAY<STRING>,
col5 MAP<STRING, FLOAT>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ':'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY '-'
STORED AS textfile
LOCATION '/test/hive/external_test';
2. 外部テーブル external_test の構造と一致するデータベース hive_database 内に、partitioned_test パーティション テーブルを作成し、ファイルの保存場所を /test/hive/partitioned_test として指定し、パーティション テーブルに 2 つのパーティション フィールドを作成し、名前とパーティションフィールドタイプのデータ。
CREATE TABLE IF NOT EXISTS
hive_database.partitioned_test(
col1 INT,
col2 STRING,
col3 FLOAT,
col4 ARRAY<STRING>,
col5 MAP<STRING, FLOAT>
)
PARTITIONED BY (
col6 STRING,
col7 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ':'
COLLECTION ITEMS TERMINATED BY ','
MAP KEYS TERMINATED BY '-'
STORED AS textfile
LOCATION '/test/hive/partitioned_test';
Hive のデータ操作言語
1.空白を埋める
1. ファイルのロードとは、ファイル内の構造化データを指定されたHiveデータ テーブルにロードすることです。
2. Hive では、静的パーティショニング、動的パーティショニング、およびハイブリッド パーティショニングを通じて、データをパーティション化されたテーブルにロードできます。
3. クエリ挿入は、単一テーブル挿入、複数テーブル挿入、およびローカル挿入に分類できます。
4. IMPORT と EXPORT は、それぞれインポートとエクスポートを表します。
5. Hive 動的パーティションを使用する前に、Hive 構成パラメーター hive.exec.dynamic.partition.mode を __nostrict_______ に変更する必要があります。
2. 判断に関する質問
1. Hive にロードされたファイルは、HDFS ファイル システム内のファイルのみをロードできます。(F)
2. LOCATION 句を使用すると、データ ファイル内のデータをデータ テーブルにロードできます。(F)
3. ローカル挿入とは、ローカル システム ファイルのデータをデータ テーブルに挿入することです。(F)
4. マルチテーブル挿入とは、複数のテーブルのクエリ結果を複数のテーブルに挿入することです。(た)
5. 挿入されたデータ テーブルの列の数がクエリ データ テーブルの列の数と一致していることを確認します。(た)
3. 多肢選択問題
1. 以下の選択肢のうち、データの挿入に関する記述は正しく記述されています(A)。
INSERT INTO TABLE table1 VALUES (11);
B.INSERT INTO TABLE table2 VALUES (user01);
C.INSERT INTO TABLE table3 VALUES (11,20)(22,30);
D.INSERT INTO TABLE table3 VALUES (user01),(user02);
2. 以下の選択肢のうち、クエリデータに関する記述は正しく記述されています(B)。
table1 からユーザー名市を選択します。
B.SELECT * FROM table1;
C.SELECT ユーザー名 FROM table1 WHERE 州;
D.SELECT ユーザー名 FROM table1 WHERE 省=山東省;
4. 短答式の質問
1. LOAD DATA文で指定したデータテーブルにデータファイルをロードする際の注意事項を簡単に説明します。
答え:
ファイル区切り文字は、データ テーブルのフィールド区切り文字と一致している必要があります。
ファイルの改行文字は、データ テーブルの行区切り文字と一致している必要があります。
ファイル内のコレクション データは、データ テーブルのコレクション要素の区切り文字と一致しています。
ファイル内のキーと値のペアのデータは、データ テーブルの作成時に指定したキーと値のペアの区切り文字と一致しています。
ファイル内の各フィールドの順序は、データ テーブル内のフィールドの順序と一致している必要があります。
ファイル内のフィールドの数は、データ テーブル内のフィールドの数と一致している必要があります。
- ダイナミック パーティションとハイブリッド パーティションの違いについて簡単に説明します。
答え:
動的パーティションを使用してデータをロードする場合は、パーティション フィールドを指定するだけで済みます。混合パーティションを使用してデータをロードする場合は、パーティション フィールドとパーティション フィールド値を含むパーティションを指定する必要があり、他のパーティションはパーティション フィールドを直接使用できます。
5. 操作に関する質問
1. ローカル ファイル システム ディレクトリ /export/data/hive_data にあるファイル test.txt を、partitioned_table のセカンダリ パーティション Province=ShanDong/city=HeZe にロードします。
LOAD DATA LOCAL INPATH '/export/data/hive_data/test.txt' INTO TABLE partitioned_table PARTITION (province='ShanDong', city='HeZe');
Hive データクエリ言語
1.空白を埋める
1. SELECT 文のグループ化操作の句はG ROUP BYです。
2. 複合演算子 Sx でサポートされるデータ型は、Structureです。
3. 共通テーブル式は一時的な結果セットです。
4. UNIONステートメントは、複数の SELECT ステートメントの結果を 1 つの結果セットに結合するために使用されます。
5. サンプリング クエリは、データ ブロック サンプリング、ランダム サンプリング、バケット サンプリングに分かれています。
2. 判断に関する質問
1. LIMIT 句は、クエリ テーブルの行データを制限するために使用されます。(た)
2. DISTINCT 句を使用すると、クエリ結果の重複を排除できます。(た)
3. 関係演算子 RLIKE は、すべてのプリミティブ データ型をサポートします。(F)
4. グループ化操作により、MapReduce タスクの処理がトリガーされます。(た)
5. JOIN ステートメントの LEFT OUTER JOIN と LEFT JOIN は同じ意味を持ちます。(た)
3. 多肢選択問題
1. 以下の選択肢のうち、関係演算子ではないものは(B)です。
!=
!
C.好きではない
D.いいね
2. 以下の選択肢のうち、グループ化操作に関する正しい記述は(D)です。
A.Null値はグループ化されません
B.GROUP BY 句の実行順序は SELECT 文の後です。
C.GROUP BY 句を使用する場合、SELECT ステートメントには集計関数のみを使用でき、列は使用できません。
D.GROUP BY 句の列は、SELECT ステートメントの列と一致している必要があります。
4.短答式の質問
1. 左外部結合、右外部結合、完全外部結合、内部結合がどのように関連付けられているかを簡単に説明します。
内部結合: 関連付けられた列に従って、左側のテーブルと右側のテーブルで関連付けることができるデータが結合されて返され、返される結果は 2 つのテーブルのすべてが一致するデータです。
左外部結合: 関連付けられた列に従って、左側のテーブルの完全な値を保持します。右側のテーブルに左側のテーブルに一致する値がある場合は、その値が保持されます。右側のテーブルに左側のテーブルに一致する値がない場合は、その値が保持されます。の場合は、NULL に置き換えられます。
右外部結合: 関連付けられた列に従って右のテーブルの完全な値を保持します。左のテーブルに右のテーブルに一致する値がある場合はそれを保持します。左のテーブルに右のテーブルに一致する値がない場合は、 NULL に置き換えます。
完全外部結合: 関連付けられた列に従って左側のテーブルと右側のテーブルのすべてのデータを返し、関連付けできない場合は NULL に置き換えます。
2. SORT BY 句と ORDER BY 句の違いを簡単に説明します。
ORDER BY はクエリ結果をグローバルに並べ替えるために使用され、クエリ結果セットは Reducer によってのみ処理されます。
SORT BY は、クエリ結果を部分的に並べ替えるために使用されます。Reducer の数を分割するための MapReduce のデフォルト ルールに従って、クエリ結果セットは処理のために複数の Reducer に渡されます。
5. 操作に関する質問
従業員情報テーブルemployees_table内の年齢が25歳以下または35歳以上の従業員の情報を照会します。
SELECT * FROM hive_database.employess_table WHERE Staff_age >= 35 OR Staff_age <= 25;
ハイブ機能
1.空白を埋める
1. Hive カスタム関数は、 UDF、UDAF、およびUDTFに分類されます。
2. 指定された列のデータを配列に結合し、データを重複排除する関数は COLLECT_SET() です。
3. UDTF プログラムを作成するときは、 GenericUDTFクラスを継承する必要があります。
4. サイドビューを使用する場合、テーブル生成関数に列の別名を指定できます。
2. 判断に関する質問
1. UDF はユーザー定義集計関数の略です。(F)
2. ROUND() 関数は、0 から 1 までのランダムな値を返します。(F)
3. CONCAT() 関数は、区切り文字を使用せずに文字列を順番に連結します。(た)
4. TRIM() 関数は文字列を分割するために使用されます。(F)
3. 多肢選択問題
1. 以下のオプションのうち、文字列関数に属さないものは(D)です。
RPAD()
B.リピート()
SUBSTR()
D.合体()
2. 以下の選択肢のうち、数学関数に属するものは(C)です。
A.SUM()
B.COUNT()
C.ネガティブ ()
BINARY()
4.短答式の質問
1. 文字列関数CONCAT()とCONCAT_WS()の違いを簡単に説明します。
CONCAT() は、区切り文字を使用せずに文字列を順番に連結します。
CONCAT_WS() は、指定された区切り文字に従って文字列を連結します。
2. 文字列関数 COLLECT_SET() と COLLECT_LIST() の違いを簡単に説明します。
COLLECT_SET() は、指定された列のデータを配列に結合して重複データを削除します。
COLLECT_LIST() は、データを繰り返さずに、指定された列のデータを配列に結合します。
5. 操作に関する質問
1. 2列の値が等しいかどうかを比較するUDFプログラムを作成し、比較した2列の値が等しくない場合は、2列の値のうち小さい方の値と、 2 つの列の値を加算します。
パブリック クラス hiveUDF は UDF を拡張します {
public String Evaluate(intcol1,floatcol2){
if (col1>col2){
return "min:"+col2+",diff:"+(col1+col2);
}else if(col1<col2){
return "min:"+col1+",diff:"+(col2+col1);
}それ以外 {
「0」を返します。
}
}
}
ハイブトランザクション
1.空白を埋める
1. Hive トランザクション テーブルのデータは、基本ファイルと増分ファイルという 2 種類のファイルに分割されます。
2. Hive トランザクションを開始するときは、コンパクターのワーカー スレッドの数が1 以上であることを指定する必要があります。
3. Hive トランザクション テーブルのファイル ストレージ形式は、ORC形式である必要があります。
4. Hive は、 HiveServer2 で実行される一連のバックグラウンド プロセスコンパクターを通じてトランザクション サポートを実装します。
2. 判断に関する質問
1. Hive はデフォルトでトランザクション サポートを有効にします。(F)
2. Hive トランザクション テーブル データ操作を更新するための列は、トランザクション テーブルにすでに存在している必要があります。(た)
3. Hiveトランザクションテーブルのデータを削除する場合、条件を指定しないと実行できません。(F)
3. 多肢選択問題
1. 以下の選択肢のうち、取引の 4 つの特性に該当するのは (D) です。
A.原子性
B.隔離
C.持続性
D.許容範囲
4. 短答式の質問
基本ファイルと増分ファイルの役割を簡単に説明します。
基本ファイルは、Hive トランザクション テーブルに元のデータを格納するために使用され、増分ファイルは、Hive トランザクション テーブルに格納された新規追加、更新、および削除されたデータを格納するために使用されます。
5. 操作に関する質問
トランザクション テーブル tran_clustered_table 内の user03 という名前の従業員の ID を 010 に更新し、年齢を 33 に更新します。
UPDATE hive_database.tran_clustered_table
年齢 = 33、id="010" を設定してください
WHERE 名 = "user03";
ハイブの最適化
1.空白を埋める
1. ファイル保存形式 ORCFile の使用法はSTORED AS ORCです。
2. Hive のデフォルトのファイル保存形式はTextFileです。
3. ORCFile 自体は、 ZLIBとSNAPPYという 2 種類の圧縮をサポートしています。
4. パラメータ hive.exec.Parallel は、並列実行を構成するために使用されます。
2. 判断に関する質問
1. デカルト積 JOIN は 1 つの Reduce でのみ処理できます。(た)
2. ORCFile ファイル記憶形式では、LOAD ステートメントを通じてデータをロードできます。(F)
3. パラメータmapred.map.tasksは主にマップの数を減らすために使用されます。(F)
3. 多肢選択問題
1. 以下のオプションのうち、MapReduce 圧縮を設定するために使用されるパラメータは (B) です。
a.mapreduce.map.input.compress
Hive.exec.compress.intermediate
C.mapreduce.fileoutputformat.compress.codec
D.mapreduce.output.fileoutputformat.type
4. 短答式の質問
構成マージファイルの役割を簡単に説明します。
各データ ファイルは、処理のためにマップに渡されます。複数の小さなデータ ファイルがある場合、それぞれの小さなデータ ファイルがマップを開始するため、リソースが不必要に浪費されます。そのため、これらの小さなデータ ファイルは、マップを作成する前に保存する必要があります。実行されました。マージします。
5. 操作に関する質問
外部テーブルのテストを作成し、テーブルの列をカスタマイズし、テーブルのファイル格納形式を ORCFile にする必要があり、テーブルの圧縮形式を ZLIB として指定します。
CREATE TABLE test(
col1 STRING,
col2 STRING,
col3 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS ORC
TBLPROPERTIES ("orc.compress"="ZLIB");