简述
本文是介绍使用spark on hive的方式读取不同集群hive中的数据并落入本地集群。
一般使用spark on hive的方式操作hive数据的使用场景都是spark任务提交和hive所处的是同一个集群上。如果不同是不同集群就会有诸多限制。
这种方式对集群权限要求比较高,这也是用此方法不太实用的地方,就当作是一个不考虑实用性的小实验。
这种方式算是个野路子,有其他更成熟的产品工具使用,常见的跨集群的数据迁移工具有distcp、sqoop等等。
实现方法
第一步构建SparkSession
val spark = SparkSession.builder()
.master("local[2]")
.appName("test")
.config("hive.metastore.schema.verification", false)
.config("dfs.client.use.datanode.hostname", true)
.config("hive.metastore.uris","thrift://xxx:9083")
.enableHiveSupport()
.config("dfs.client.socket-timeout",300000)
.getOrCreate()
执行报错
val df = spark.sql(
"""
|select * from test.user_info
|""".stripMargin)