前に書かれている:ブロガーは、ソフトウェアエンジニアリング部門のビッグデータアプリケーション開発部門の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パッケージをインポートする必要があります。しかし、現在それらのほとんどはスパークオンハイブを使用しています。
乗る
概観
- 最も信頼できる説明については、Apache Sparkの公式Webサイト(http://spark.apache.org/docs/latest/sql-data-sources-hive-tables.html)を参照してください。
誰にとっても最も重要なブロガーの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のカップを取り出しようとしたとき、
コンピューターは貪欲に泣いていた可能性があり、ブルースクリーンの警告
わかりました、私は何も言わないでください。もっと話すと、それはすべて涙です。私はこれを共有するためにここにいます。私は、コンピュータを救うためにコンピュータを救出しに行きました。