本地Spark连接远程集群Hive(Scala/Python)
Posted 大数据每日哔哔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本地Spark连接远程集群Hive(Scala/Python)相关的知识,希望对你有一定的参考价值。
点击蓝色“大数据每日哔哔”关注我
加个“星标”,第一时间获取大数据架构,实战经验
摘要:本地Spark连接远程集群Hive(Scala/Python)
很多时候,我们在编写好 Spark 应用程序之后,想要读取 Hive 表测试一下,但又不想操作 (打jar包——>上传集群——>spark-submit) 这些步骤时,那我们就可以在本地直连 Hive,直接运行你的 Spark 应用程序中的 main 函数即可。代码如下(版本为Spark2.0+)
代码如下:
import org.apache.spark.sql.SparkSession
object SparkDemo {
val spark = SparkSession
.builder()
.appName("Spark to Hive")
.master("local[4]")
.config("hive.metastore.uris", "thrift://bigdata01:9083,thrift://bigdata02:9083")
.enableHiveSupport()
.getOrCreate()
val df = spark.read.table("db.table")
df.show(false)
spark.close()
}
代码中在创建 SparkSession 实例时的配置项 “hive.metastore.uris” 的值以个人情况而定,具体配置对应的是你集群中Hive安装目录下的这个文件 …/conf/hive-site.xml 中的 hive.metastore.uris,这个配置表示Hive的Metastore Server所在的节点。
10.1.11.10 bigdata01
10.1.11.11 bigdata02
10.1.11.12 bigdata03
画外音:笔者推荐使用 SwitchHosts 工具来管理 hosts 文件。
代码如下:
import os
from pyspark.sql import SparkSession
os.environ["SPARK_HOME"] = "F:\App\spark-2.3.1-bin-hadoop2.6"
if __name__ == '__main__':
spark = SparkSession\
.builder \
.appName("Spark to Hive") \
.master("local[4]") \
.config("hive.metastore.uris", "thrift://bigdata01:9083,thrift://bigdata02:9083") \
.enableHiveSupport()\
.getOrCreate()
df = spark.read.table("db.table")
df.show(truncate=False)
spark.stop()
pyspark 版本跟 Scala 不同的地方在于,pyspark 运行时会依赖 Spark 的一些文件,因此需要设置环境变量 SPARK_HOME,我们可以到 Spark官网下载与你所使用Spark相对应的版本,文件名称类似spark-2.3.3-bin-hadoop2.6.tgz,下载之后,解压到你电脑指定目录下即可,最后将解压后的根目录作为SPARK_HOME。
最新推荐
数据仓库
专注大数据技术、架构、实战
关注我,带你不同角度看数据架构
你也「在看」吗? 以上是关于本地Spark连接远程集群Hive(Scala/Python)的主要内容,如果未能解决你的问题,请参考以下文章 二次开发Spark实现JDBC读取远程租户集群Hive数据并落地到本集群Hive的Hive2Hive数据集成Java 二次开发Spark实现JDBC读取远程租户集群Hive数据并落地到本集群Hive的Hive2Hive数据集成Java 在远程集群上从 Spark 运行 hive 查询时,客户端无法通过以下方式进行身份验证:[TOKEN, KERBEROS]