SparkSQL統合Hive

1、Hiveクエリプロセスと原則
执行HQL时,先到MySQL元数据库中查找描述信息,然后解析HQL并根据描述信息生成MR任务
HiveはSQLをMapReduceに変換し、実行速度が遅い
SparkSQLを使用してHiveを統合することは、実際には、让SparkSQL去加载Hive 的元数据库,然后通过SparkSQL执行引擎去操作Hive表内的数据
SparkSQLがメタデータをロードできるようにするためにHiveのメタベースサービスをオンにする必要があります
2. 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>
 </configuration>

3。:バックグラウンドでHive MetaStoreサービスを開始する

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

4. SparkSQLの統合Hive MetaStore
Sparkには組み込みのMateStoreがあり、Derby組み込みデータベースを使用してデータを保存しますが、このモードは一度に1つのSparkSessionでしか使用できないため、本番環境ではHiveを使用することをお勧めします。 MetaStore
SparkSQLはHiveのMetaStoreを統合します。主なアイデアは、構成を介してそれにアクセスし、HDFSを使用してWareHouseを保存できるようにすることです。

したがって、HadoopとHiveの構成ファイルをSparkの構成ディレクトリに直接コピーできます。hive-site.xml
メタデータウェアハウスの場所とその他の情報
core-site.xmlセキュリティ関連の構成
hdfs-site.xml HDFS関連の構成

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

import org.apache.spark.sql.SparkSession
object day_hive01 {
// 4、SparkSQL Integration Hive MetaStore
def main(args:Array [String]):Unit = {
// Create sparkSession
val spark:SparkSession = SparkSession.builder() master(“ local [*]”)。appName(“ day_hive01”)。enableHiveSupport()。getOrCreate()
// hive コマンドを直接呼び出す
//データベースを表示する
spark.sql(“ show databases”)。show()
//移動データベース
spark.sql( "use bilibili")。Show()
//テーブルを表示
spark.sql( "show tables")。Show()
//クエリデータ
spark.sql( "select * from month limit 2")。表示()
}
}

元の記事を238件公開 賞賛された429件 ビュー250,000件

おすすめ

転載: blog.csdn.net/qq_45765882/article/details/105562220