本地IDEA中使用Spark直连集群上的Hive

Posted shayue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本地IDEA中使用Spark直连集群上的Hive相关的知识,希望对你有一定的参考价值。

背景

我用VMWare搭建了一个Hadoop集群,Spark与Hive等组件都已经安装完毕。现在我希望在我的开发机上使用IDEA连接到集群上的Hive进行相关操作。

进行配置修改

修改Hive中的hive-site.xml

在hive-site.xml中找到这个配置,将改成如下形式

<property>
  <name>hive.metastore.uris</name>
  <value>thrift://master节点的ip地址:9083</value>
  <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>

在hive-site.xml中找到如下配置,将中设置为false

<property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
  <description>
      Enforce metastore schema version consistency.
      True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automatic
            schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
            proper metastore schema migration. (Default)
      False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
  </description>
</property>

将相关文件拷贝

  1. 复制hive-site.xml到spark目录下的conf/中
  2. 将hive文件夹jar下的mysql-connector-java-版本.jar拷贝到spark目录下的jar/中

在集群上启动命令

在master节点的命令行中启动

hive --service metastore
hive --service hiveserver2

以上2条命令可以在后台运行,使用nohup即可

本地IDEA使用

示例代码如下:

import ml.dmlc.xgboost4j.scala.spark.XGBoost
import org.apache.spark.ml.feature.{StringIndexer, VectorAssembler}
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.{DoubleType, StringType, StructField, StructType}

object XgbPredict {
    def main(args: Array[String]): Unit = {
        val spark = SparkSession
          .builder()
          .master("spark://172.16.74.128:7077")    // standalone模式
          .config("hive.metastore.uris", "thrift://172.16.74.128:9083")    // 配置1
          .config("spark.sql.warehouse.dir", "hdfs://172.16.74.128:9000/user/hive/warehouse") // 配置2
          .enableHiveSupport()
          .getOrCreate()

        spark.sql("show databases").show()
        println("Done!")
    }

}

以上是关于本地IDEA中使用Spark直连集群上的Hive的主要内容,如果未能解决你的问题,请参考以下文章

IDEA本地运行spark生成数据到hive中出错

spark 2.x在windows环境使用idea本地调试启动了kerberos认证的hive

Spark 本地连接远程服务器上带有kerberos认证的Hive

IDEA,SparkSql读取HIve中的数据

本地Spark连接远程集群Hive(Scala/Python)

Spark抽取mysql中的数据到Hive中