Hive のインストール & SQL の重複を削除する 4 つの方法 & Zeppelin のインストール

巣箱の原理

Hive はHadoop に基づくデータ ウェアハウス ツールです。構造化データ ファイルをデータベース テーブルにマップし、完全な SQL クエリ関数を提供します。SQL ステートメントを MapReduce タスクに変換して実行できます。その利点は、学習コストが低く、シンプルなMapReduce 統計をSQL ライクなステートメントで迅速に実現でき、特別な MapReduce アプリケーションを開発する必要がないことであり、データ ウェアハウスの統計分析に非常に適しています。
    Hvie は、Hadoop 上に構築されたデータ ウェアハウス インフラストラクチャです。これは、Hadoop に保存された大規模なデータを保存、クエリ、分析できるメカニズムであるデータ抽出変換ロード (ETL) を実行するために使用できる一連のツールを提供します。Hive は、HQL と呼ばれる単純な SQL に似たクエリ ステートメントを定義します。これにより、SQL に精通したユーザーがデータをクエリできるようになります。同時に、この言語を使用すると、MapReduceに精通した開発者は、組み込みのマッパーおよびリデューサーでは完了できない複雑な分析タスクを処理するカスタム マッパーおよびリデューサーを開発することもできます。Hive は SQL のクエリ言語 HQ L を使用している
    ため、データベースとしての Hive を理解しやすいです。実際、構造的な観点から見ると、クエリ言語が似ていることを除けば、Hive とデータベースには共通点がありません。この記事では、Hive とデータベースの違いをさまざまな側面から説明します。データベースはオンライン アプリケーションでも使用できますが、Hive はデータ ウェアハウス向けに設計されているため、このことを理解すると、アプリケーションの観点から Hive の特性を理解するのに役立ちます。

 

直線構成

beeline 構成
cd /opt/soft/hive110/conf/ 
vim hive-site.xml 
hive の hive-site.xml 構成ファイル
<property>
 
    <name>hive.server2.authentication</name> 
    <value>NONE</value > 
    <description> 
      [nosasl、none、ldap、kerberos、pam、custom] のいずれかが必要です。
      クライアント認証のタイプ。
        NONE: 認証チェックなし
        LDAP: LDAP/AD ベースの認証
        KERBEROS: Kerberos/GSSAPI 認証
        CUSTOM: カスタム認証プロバイダー
                (プロパティ hive.server2.custom.authentication.class で使用) 
        PAM: プラグ可能認証モジュール
        NOSASL: Raw トランスポート
    </description> 
  <property>
 
    <name>hive.server2.thrift.client.user</name> 
    <value>root</value> 
    <description>Thrift クライアントに対して使用するユーザー名</description> 
  </property> 
  < property> 
    <name>hive.server2.thrift.client.password</name> 
    <value>root</value> 
    <description>Thrift クライアントに対して使用するパスワード</description> 
  </property> 
hadoop
のコアサイト。 xml 配置
<configuration>
 
 <!-- 指定されたnamenodeの地址--> 
    <property> 
                <name>fs.デフォルトFS</name> 
                <value>hdfs://192.168.11.207:9000</value> 
    </property>
    <!--hadoop の使用時に生成されるファイルの保存ディレクトリを指定するために使用します-->  
    <property> 
             <name>hadoop。tmp.dir</name>
             <!--<value>file:/usr/local/kafka/hadoop-2.7.6/tmp</value>--> 
             < value >file:/home/hadoop/temp</value> 
    </property> 
        <!-- チェックポイント バックアップ ログの最大時間を設定するために使用します --> 
    <!-- <name>fs.checkpoint.period</name > 
        <value>3600</value> 
--> 
<!-- hadoop を設定するプロキシ ユーザーを示します --> 
    <property> 
        <!-- プロキシ ユーザーが属するグループを示します --> 
        <name>hadoop.proxyuser .root.groups</name> 
        <value>*</value> 
    </property> 
    <property> 
        <!--hadoop クラスターのプロキシ ユーザー hadoop を使用するノードが hdfs クラスターにアクセスできることを示します --> 
        <name>hadoop.proxyuser.root.hosts</name> 
        <value>*</value> 
    </property>
</設定>

 

 

SQL重複排除

1 つの異なる

テストから別の名前と年齢を選択してください

2 グループ化

名前、年齢
によるテストグループから名前、年齢を選択します。

3 擬似列重複排除

select id,name,age from test t1 
where t1.rowid in (select min(rowid) from test t2 where t1.name=t2.name and t1.age=t2.age);

4ウィンドウ機能オーバー(パーティション分割)

select t.id ,t.name,t.age from 
(select row_number() over(partition by name,age order by age)rank,test.* from test)t 
where t.rank = 1;

注意点

上記は、Oracle で一般的な 4 つの重複排除方法です。最初の方法は、データ量が非常に大きい場合は効率が非常に低いため、推奨されません。Mysql バージョン 8.0 より前のバージョンでは、ウィンドウ関数がサポートされていないため、使用することをお勧めします。 group by を使用して重複を削除すると 8.0 以降のウィンドウ関数を問題なく使用できるようになります。
ウィンドウ
関数の適用可能なシナリオ: グループ化された統計結果の各レコードを計算するシナリオでは、ウィンドウ関数を使用することをお勧めします。レコードごとであることに注意してください!! MySQL の通常の集計関数 (グループなど) の結果は、 by) はすべてのレコードです このグループには 1 つのレコードしかありません!!!

 

 

 

 

ハイブの設置

cd /opt/jar 
tar
-zxf hive-1.1.0-cdh5.14.2.tar.gz 
mv
hive-1.1.0-cdh5.14.2 /opt/soft/hive110 
cd
/opt/soft/hive110/ 
conf vim hive-site.xml #追加下面代詞
==================================== 
<?xml バージョン="1.0" エンコーディング="UTF-8" スタンドアロン="no"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration>
 
<property> 
<name>hive .metastore.warehouse.dir</name> 
<value>/hive/warehouse</value> 
</property> 
<property> 
<name>hive.metastore。local</name> 
<value>false</value> 
</property> 
<property>

<name>javax.jdo.option.ConnectionURL</name> 
<value>jdbc:mysql://192.168.64.210:3306/hive?createDatabaseIfNotExist=true</value> 
</property> 
<property> 
<name>javax. jdo.option.ConnectionDriverName</name> 
<value>com.mysql.jdbc.Driver</value> 
</property> 
<property> 
<name>javax.jdo.option.ConnectionUserName</name> 
<value>root</ value> 
</property> 
<property> 
<name>javax.jdo.option.ConnectionPassword</name> 
<value>3090_Cmok</value> 
</property> 
<property>
 
    <name>hive.server2.認証</name> 
    <値>NONE</value> 
  </property> 
  <property>
    <name>hive.server2.thrift.client.user</name> 
    <value>root</value> 
  </property> 
  <property> 
    <name>hive.server2.thrift.client.password</name> 
    <value> root</value> 
  </property> 
</configuration> 
< !-- mysql データベースのパスワード <value>3090_Cmok</value> 独自の 3090_Cmok を使用してください> 
<!-- 簡単に接続するには、password=root はパスワードなしのログインと同じです> 
<! -- リモート mysql データベースの場合は、ここにリモート IP またはホストを書き込む必要があります --> 
=========================== ==== 
=======

2 つの hadoop 構成 core-site.xml (合計 5 つあり、それ以上でも以下でもないことに注意してください!!!)

   cd /opt/soft/hadoop260/etc/hadoop/    vim core-site.xml 
    <プロパティ>

 
                <name>fs.defaultFS</name> 
                <value>hdfs://192.168.64.210:9000</value> 
    < /property> 
    <property> 
             <name>hadoop.tmp.dir</name>            
             <value>file:/home/hadoop/temp</value> 
    </property> 
    <property> 
        <name>hadoop.proxyuser.root.groups </name> 
        <値>*</value> 
    </property> 
    <property> 
        <name>hadoop.proxyuser.root。ホスト</name> 
        <値>*</value> 
    </property> 
       <property>
   

                <name>hadoop.proxyuser.root.users</name> 
                <value>*</value> 
</property>
        
    
    
    

 

3. mysql ドライバーをドラッグします。

 

4. 環境変数を設定する

vim /etc/profile 
#Hive

import HIVE_HOME=/opt/soft/hive110
export PATH=$PATH:$HIVE_HOME/bin
:
wq
Source
/etc/profile

5データベースの初期化

schematool -dbType mysql -initSchema

6.スタート

zkServer.sh start 
start-all.sh 
hive
--service metastore 
hive
--service hiveserver2 
hive

7.hql

データベースを表示します。
データベース mydemo を作成します。
私のデモを使用してください。
テーブル userinfos(userid int,username string,birthday string) を作成します。
userinfos に挿入 value(1,'zs',30); 
ユーザー情報から * を選択;

ツェッペリン飛行船の設置

tar -zxf zeppelin-0.8.1-bin-all.tgz -C /opt/soft/ 
hdfs
dfs -cat /hive/warehouse/mydemo.db/userinfos/000000_0 
cd

/opt/soft/ 
ls
 
mv
zeppelin-0.8.1-bin-all/ zeppelin081 
ls
 
cd
/opt/soft/zeppelin081/conf/ 
ls
 
cp
zeppelin-site.xml.template zeppelin-site.xml 
vim zeppelin-site.xml 
=== =========================== 
<プロパティ> 
  <name>zeppelin.helium.registry</name> 
  <value>ヘリウム</value> 
</property> 
============================= 
cp
zeppelin-env.sh.template zeppelin-env.sh

vim zeppelin-env.sh 
================================
エクスポート JAVA_HOME=/opt/soft/jdk180
エクスポート HADOOP_CONF_DIR=/ opt/soft/hadoop260/etc/hadoop 
============================== 
cp /opt/soft/hive110/conf/ hive-site.xml /opt/soft/zeppelin081/conf 
/



 

1.ファイルをコピーする

cp /opt/soft/hadoop260/share/hadoop/common/hadoop-common-2.6.0-cdh5.14.2.jar /opt/soft/zeppelin081/interpreter/jdbc/ 
cp
/opt/soft/hive110/lib/hive -jdbc-1.1.0-cdh55.14.2-standalone.jar /opt/soft/zepplin081/interpreter/jdbc 
/

2. 環境変数を設定する

vim /etc/profile 
#Zeppelin
export ZEPPLIN_HOME=/opt/soft/zeppelin081
import PATH=$PATH:$ZEPPELIN_HOME/bin
:
wq
Source
/etc/profile

3.スタート

cd /opt/soft/zeppelin081/bin/ 
./zeppelin-daemon.sh
start 
http://192.168.64.210:8080/
#ブラウザにアドレスを入力してzeppelinに入ります

#http://192.168.64.210:50070/  #hadoopView

 

 

cd /opt/ 
mkdir dir 
rm -rf dir 
mkdir
データ

 

  

%hive
外部テーブルの作成 mydemo.train(
    ユーザー ID 文字列,
    イベント ID 文字列,
    招待された文字列,
    パーティータイム 文字列,
    関心のある文字列, 
    not_interested 文字列
)
行形式区切りフィールドは ',' で終了します
場所 '/temp' 
TBLPROPERTIES("skip.header.line.カウント"="1" 
)

 

 

1 | zhangsan | 男性、40 | java、hadoop、spring | fid1:wangwu、fid2:zhangsanfeng 
2 | lisi | 女性、30 | linux、centos | fid1:xiaolifeidao

%hive
外部テーブルの作成 mydemo.train(
    ユーザー ID 文字列,
    イベント ID 文字列,
    招待された文字列,
    パーティータイム 文字列,
    関心のある文字列, 
    not_interested 文字列
)
行形式区切りフィールドは ',' で終了します
場所 '/temp' 
TBLPROPERTIES("skip.header.line.カウント"="1" 
)

 

 

 

  

#データの静的分割ロードでは、ユーザーがパーティションを指定する必要があります
#hive
データのローカル インパスをロードする

おすすめ

転載: blog.csdn.net/just_learing/article/details/126320723