古いQiu Mingshanドライバーが車に乗って転倒するという悲しい経験は、Spark on Hiveが何であるかを深く理解するのに役立ちます!

前に書かれている:ブロガーは、ソフトウェアエンジニアリング部門のビッグデータアプリケーション開発部門の2年生で、ニックネームはアリスと彼女のニックネームは不思議の国のアリスに由来します。インターネットのように写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新白、限定レベルのため、必然的にブログに間違いがございますので、間違いがありましたらお知らせください!個人の小さな駅:http : //alices.ibilibili.xyz/、ブログのホームページ:https : //alice.blog.csdn.net/
現在のレベルはみんなほど良くはないかもしれませんが、私がもっとうまくやれることを願っていますが、なぜなら一天的生活就是一生的缩影私は願っています在最美的年华,做最好的自己!

        このブログでは、ブロガーがどのようにしてHiveにSparkを実装する方法を共有するか、つまりHiveをストレージロールとしてのみ機能させ、SparkがSQL解析の最適化、実行を担当します...さらに面倒なく、ただ電車に乗ってください!
        
ここに画像の説明を挿入


搭乗前に知っておくべきこと

        

スパークオンハイブとハイブオンスパークの違い

1.ハイブのスパーク

        SparkがHiveを操作するためにSpark-SQLを介してHiveステートメントを使用するのはSparkであり、基になる実行はまだspark rddです。

(1)は、sparksqlを介してハイブ構成ファイルをロードし、ハイブメタデータ情報を取得します。

(2)Spark SQLは、ハイブのメタデータ情報を取得した後、ハイブのすべてのテーブルのデータを取得できます

(3)次に、spark sqlを使用してハイブテーブルのデータを操作できます

2.火花にハイブ

        これは、mapreduceのmive(Hadoopコンピューティングエンジン)操作をspark rdd(spark実行エンジン)操作に置き換えることです。sparkon hiveと比較すると、これは実装がはるかに面倒です。sparkを再コンパイルしてjarパッケージをインポートする必要があります。しかし、現在それらのほとんどはスパークオンハイブを使用しています

ここに画像の説明を挿入

乗る

概観

ここに画像の説明を挿入

誰にとっても最も重要なブロガーの1人が抽出されました

Hiveの構成は、hive-site.xml、core-site.xml(セキュリティ構成の場合)、およびhdfs-site.xml(HDFS構成の場合)ファイルをconf /に配置することによって行われます。

一体何を意味しているのか、ここではパスを最初に販売する。背後にいる全員を見ればわかるだろう

  • Hiveクエリプロセスと原則

        HQLを実行するときは、最初にMySQLメタベースで説明情報を探し、次にHQLを解析し、説明情報に基づいてMRタスクを生成します

        HiveはSQLをMapReduceに変換し、実行速度が遅い

        SparkSQLを使用してHiveを統合することは、実際にはSparkSQLにHiveメタベースをロードさせ、次にSparkSQL実行エンジンを使用してHiveテーブルのデータを操作することです

        まず、Hiveのメタデータデータベースサービスを有効にして、SparkSQLがメタデータをロードできるようにする必要があります。

        

出発

1. HiveがMetaStoreサービスを開く

<1> hive / conf / hive-site.xmlを変更し、次の構成を追加します


<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/user/hive/warehouse</value>
    </property>
    <property>
      <name>hive.metastore.local</name>
      <value>false</value>
    </property>
    <property>
      <name>hive.metastore.uris</name>
      <value>thrift://node01:9083</value>
    </property>
 </configuration>

<2> Hive MetaStoreサービスをバックグラウンドで開始する

nohup /export/servers/hive/bin/hive --service metastore 2>&1 >> /var/log.log &

第二に、SparkSQL統合Hive MetaStore

        Sparkには、Derby組み込みデータベースを使用してデータを保存する組み込みMateStoreがありますが、このモードは一度に1つのSparkSessionでしか使用できないため、本番環境には適していません。本番環境では、HiveのMetaStoreをお勧めします

        HiveのMetaStoreを統合するSparkSQLの主なアイデアは、構成を通じてアクセスでき、HDFSを使用してWareHouseを保存できるため、直接HadoopとHiveの設定ファイルをSparkの設定ディレクトリにコピーします

        hive-site.xmlの場所とメタデータウェアハウスのその他の情報
        core-site.xmlのセキュリティ関連の構成
        hdfs-site.xml HDFS関連の構成

        
        シェルウィンドウに入り、次のコマンドを実行します

        hiveディレクトリのhive-site.xmlをSparkインストールディレクトリにコピーします。

cp /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml /export/servers/spark/conf

        hadoopインストールディレクトリの下のcore-site.xmlとhdfs-site.xmlを、sparkインストールディレクトリにコピーします。

cp /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml /export/servers/spark/conf
cp /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml /export/servers/spark/conf

ヒント:IDEAローカルテストを使用して、上記の構成ファイルを直接リソースディレクトリに配置します。

        

ドラッグレース

        最初に以下のコードを完成させ、SparkSQLを使用してテーブルの作成を完了し、ローカルファイルのデータをテーブルにインポートします

SparkSQLを使用してHiveテーブルを操作する

import org.apache.spark.sql.SparkSession

object HiveSupport {
  def main(args: Array[String]): Unit = {
    //创建sparkSession
    val spark = SparkSession
      .builder()
      .appName("HiveSupport")
      .master("local[*]")
      .config("spark.sql.warehouse.dir", "hdfs://node01:8020/user/hive/warehouse")
      .config("hive.metastore.uris", "thrift://node01:9083")
      .enableHiveSupport()//开启hive语法的支持
      .getOrCreate()

    // 设置日志级别
    spark.sparkContext.setLogLevel("WARN")

    //查看有哪些表
    spark.sql("show tables").show()

    //创建表
    spark.sql("CREATE TABLE person (id int, name string, age int) row format delimited fields terminated by ' '")

    //加载数据,数据为当前SparkDemo项目目录下的person.txt(和src平级)
    spark.sql("LOAD DATA LOCAL INPATH 'in/person.txt' INTO TABLE person")

    //查询数据
    spark.sql("select * from person ").show()

    spark.stop()
  }
}

        プログラムを実行する前に、ハイブシェルウィンドウに入り、現在のデフォルトデータベースのデフォルトにあるテーブルを確認します。

hive (default)> show tables;
OK
tab_name
student
techer
techer2
Time taken: 0.738 seconds, Fetched: 3 row(s)
hive (default)> 

        次に、右クリックして実行すると、IDEAコンソールに次の結果が表示され、プログラムが正常に実行されたことが示されます。
ここに画像の説明を挿入
再びハイブシェルウィンドウに入り、現在のテーブルを確認します。この時点で、SparkSQLで作成したテーブルが見つかりました。
ここに画像の説明を挿入

ロールオーバー

        ブロガーがついに安堵のため息をついて、1982年に収集されたLei Bi Xiaoyingのカップを取り出しようとしたとき、
ここに画像の説明を挿入
        コンピューターは貪欲に泣いていた可能性があり、ブルースクリーンの警告

ここに画像の説明を挿入

        わかりました、私は何も言わないでください。もっと話すと、それはすべて涙です。私はこれを共有するためにここにいます。私は、コンピュータを救うためにコンピュータを救出しに行きました。

ここに画像の説明を挿入

元の記事を258件公開 2360のように表示 500,000回以上 訪問

おすすめ

転載: blog.csdn.net/weixin_44318830/article/details/105471548