コード例はHiveパーティションのバケット化とカスタム関数を説明しています

データのインポート:

1、

ローカルローカルパス「/root/tes.txt」をテーブルtest.usrにロードします。

  将本地的数据导入到hive中

2. hdfsクラスターからデータをインポートする

load data inpath ' hdfs:// node01:9000 / user / tes.txt ' into table test.te; LOAD DATAコマンドは、LOAD DATA LOCAL INPATHとLOAD DATA INPATHに分割できます。2つの違いは、LOCALはローカルファイルを追加せずにローカルファイルをインポートするという点がHDFSファイルであるため、ファイルを直接アップロードするのと同じです。

3.挿入---内部テーブルと外部テーブル、パーティションには適していません

4、

table1からinsert(overwrite)に挿入しますtable2 select id、name

パーティションテーブル

Hiveパーティション(ストレージ用に異なるファイルディレクトリに分割)

1.静的パーティション:

対応するパーティションフィールドをテーブル定義で指定する必要があります-パーティションフィールドはテーブル内のフィールドと重複してはいけません

a、単一のパーティションテーブル作成ステートメント:

(dt int)で分割されたテーブルday_table(id int、content string)を作成します。

データのアップロード:ローカルローカルパス「/root/tes.txt」をテーブルtest.usrパーティションにロードします(年齢= 10)。

単一のパーティションテーブル、日ごとのパーティション、テーブル構造にはid、content、dtの3つの列があります。

区別するフォルダとしてdtを使用します

厚みと強度を分割する場合、各分割の内容を減らして計算効率を向上させるために、ビジネスニーズに応じて、対応する年、月、日、時、分、秒を事前に設定する必要があります

b。二重パーティションテーブル作成ステートメント:

(dt int、hour int)で分割されたテーブルhour(id int、content string)を作成します。

日と時間でパーティション化されたダブルパーティションテーブル。テーブル構造に新しく2つの列dtとhourが追加されました。

最初にフォルダーとしてdtを使用し、次にそれを時間サブフォルダーで分割します

パーティションを追加

テーブル時間を変更し、パーティションを追加します(dt = 10、hour = 40);

警告テーブルtablename add partiton(dt = 20、hour = 40)

つまり、パーティションを追加する場合、直接追加することはできませんが、対応する並べ替えを完了するには、元のパーティションを含める必要があります。

パーティションを削除

変更テーブルtablenameドロップパーティション(sex = 'boy')

アラートテーブルtablename drop partiton(dt = 20、hour = 40)

注:パーティションを削除すると、既存のすべてのパーティションが削除されます

2.動的パーティション:

権限を変更する方法:

1、conf / hive-site.xml

2.ハイブ内のセットを使用して、それに応じて設定します

3.ハイブの開始時にhive --conf hive.exec.dynamic.partiton = trueを設定します

権限を変更する方法

1.権限を変更する

set hive.exec.dynamic.partiton = true //動的パーティションをオンにします

2.デフォルトの状態を変更します

set hive.exec.dynamic.partiton.mode = nostrict //デフォルトのstrict。少なくとも1つの静的パーティションがあります

パーティションテーブルを作成します。

create create psn22(id int、name string、likes array <String>、address map <string、string>)partitioned by(age int、sex string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '、' COLLECTION ITEMS TERMINATED BY '、' MAP ':'で終了するキー '\ t'で終了する行

データを書き込む

from psn21 //既存のテーブルとデータを挿入する必要があります上書きテーブルpas22パーティショニング(年齢、性別)選択*年齢、性別で配布

バレルテーブル:

試験データ

1、tom、11

バケツを開ける

hive.enforce.bucketing = trueを設定します

バケットを作成する

(年齢)でクラスター化されたテーブルpsnbucket1(id int、name string、age int)を作成し、「、」で終了する4つのバケット行フォーマット区切りフィールドに

データを読み込む

テーブルに挿入psnbucket select id、name、age from psn31

サンプリング

バケット*テーブルのサンプルを選択*(コリームによりバケット4のうちの1)

カスタム機能

UDF:一对一

	1、继承UDF

	2、重写evaluate

	(实现传入的参数,并且封装了很多的方法)

パブリッククラスAddPrefixはUDFを拡張します{/ **

  • ここでは、任意の入力にカスタムプレフィックス情報を追加する実装します* / public String evaluate(String str){return "HIVE UDF Prefix:" + str;}}
UDAF:多对一

UDTF:一对多


1、创建udf自定义函数

2、达成jar包并上传到linux集群

3、将集群中的jar包上传到hive中:add jar /opt/software/jars/UDF.jar;

4、创建属于我自己的函数	

"com.hpe.TestUdf.TestUdf"として一時的な関数bwsを作成します; 5.関数を使用して実行します

ただし、カスタム関数を作成する場合、それは一般的に作成される一時的な関数であり、起動時に問題外です。永続的な関数を作成するにはどうすればよいですか?

恒久的なハイブカスタム関数を登録する

add jar的方式只是导入临时的jar文件,所以不能创建永久的自定义函数,想要添加永久的自定义函数需要在配置文件中对jar的引入进行修改



在hive-site.xml文件中添加

<property> <name> hive.aux.jars.path </ name> <value> file:///opt/module/hive/lib/app_logs_hive.jar </ value> </ property>

注意:value中的值为你的udf.jar上传到linux的指定路径下,若是多个jar包,以,(逗号)进行分割

みんなで一緒に学び、Java Architects AllianceのWeChatパブリックアカウントに注意を払い、バックグラウンドでキーワードに返信して、スタックリーダーによって分類されたJavaアーキテクチャテクノロジードライグッズを入手してください。

公開された78のオリジナル記事 Like1 Visitors1256

おすすめ

転載: blog.csdn.net/weixin_42864905/article/details/105497896