データのインポート:
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アーキテクチャテクノロジードライグッズを入手してください。