spark 整合 hive

spark-shell 整合 hive

-------------------------------------------------------------------------------------------------------------------------------

1、将 hive/conf/hive-site.xml 拷贝到 spark/conf 下 (目前只是在spark的master节点112,执行以下针对hive-site.xml 和各种jar的  操作,分节点没有操作,可能在做spark HA高可用的时候需要操作。)
将 hive/lib/mysql-connector-java-8.0.14.jar 拷贝到 spark-244/jars/mysql-connector-java-8.0.14.jar

2、启动错误 【The connection pool plugin of type “HikariCP” was not found in the CLASSPATH】
相关修正,

A : HikariCP 修改为dbcp 方式
修改连接池配置方式 spark/conf/【hive-site.xml】
如下:<name>dettanucleus.connectionPoolingType</name>
<value>dbcp</value>

B:拷贝 hive/lib/HikariCP-2.6.1.jar 到spark/jars

3、错误:Hive Schema version 1.2.0 does not match metastore‘s schema version 3.1.0 Metastore is not upgraded or corrupt
修改 spark/conf/hvie-site.xml中关闭版本验证
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
也可以修改数据库,方式如下:
select * from version;
update VERSION set SCHEMA_VERSION=‘2.1.1’ where VER_ID=1

****************************************************************************************
验证脚本:

bin/spark-shell --master yarn (或者集群方式启动 bin/spark-shell --master spark://master:7077 )

scala> import org.apache.spark.sql.hive.HiveContext
val hc=new HiveContext(sc)
hc.sql("show databases").show
hc.sql("use rdw").show
hc.sql("show tables").show
hc.sql("select * from dh_call_info2 ").show

结果如下:

scala> hc.sql("select * from dh_call_info2 ").show
+---+---------+----+-----------+-----------+
| id|telephone|name|create_time|update_time|
+---+---------+----+-----------+-----------+
| 1| 13511001|张三| 0| 0|
| 2| 13611001|李四| 0| 0|
+---+---------+----+-----------+-----------+

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

spark-sql 整合 hive

完成以上spark-shell 整合 hive的步骤之后可以直接使用 spark-sql

bin/spark-sql --master yarn

执行命令

spark-sql> use rdw;
2019-12-10 15:02:51,968 INFO metastore.HiveMetaStore: 0: get_database: rdw
2019-12-10 15:02:51,968 INFO HiveMetaStore.audit: ugi=hadoop ip=unknown-ip-addr cmd=get_database: rdw
Time taken: 0.121 seconds
2019-12-10 15:02:52,032 INFO thriftserver.SparkSQLCLIDriver: Time taken: 0.121 seconds
spark-sql> select * from dh_call_info2;

XXXXXX..........

2019-12-10 15:02:16,646 INFO scheduler.DAGScheduler: Job 1 finished: processCmd at CliDriver.java:376, took 0.456059 s
1 13511001 张三 0 0
1 13511001 张三 0 0
2 13611001 李四 0 0
Time taken: 0.786 seconds, Fetched 3 row(s)
2019-12-10 15:02:16,649 INFO thriftserver.SparkSQLCLIDriver: Time taken: 0.786 seconds, Fetched 3 row(s)

=====================================================

SparkSession、SparkContext、SQLContext和HiveContext之间的区别。

参考地址: https://www.cnblogs.com/lillcol/p/11233456.html

SparkContext 是什么?

  1. 驱动程序使用SparkContext与集群进行连接和通信,它可以帮助执行Spark任务,并与资源管理器(如YARN 或Mesos)进行协调。
  2. 使用SparkContext,可以访问其他上下文,比如SQLContext和HiveContext。
  3. 使用SparkContext,我们可以为Spark作业设置配置参数。

如果您在spark-shell中,那么SparkContext已经为您提供了,并被分配给变量sc。
如果还没有SparkContext,可以先创建一个SparkConf。

//set up the spark configuration
val sparkConf = new SparkConf().setAppName("hirw").setMaster("yarn")
//get SparkContext using the SparkConf
val sc = new SparkContext(sparkConf)

SQLContext 是什么?

SQLContext是通往SparkSQL的入口。下面是如何使用SparkContext创建SQLContext。

// sc is an existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

一旦有了SQLContext,就可以开始处理DataFrame、DataSet等。

HiveContext 是什么?

HiveContext是通往hive入口。
HiveContext具有SQLContext的所有功能。
实际上,如果查看API文档,就会发现HiveContext扩展了SQLContext,这意味着它支持SQLContext支持的功能以及更多(Hive特定的功能)

public class HiveContext extends SQLContext implements Logging

下面是如何使用SparkContext获得HiveContext

// sc is an existing SparkContext.
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

SparkSession 是什么?

SparkSession是在Spark 2.0中引入的,
它使开发人员可以轻松地使用它,这样我们就不用担心不同的上下文,
并简化了对不同上下文的访问。通过访问SparkSession,我们可以自动访问SparkContext。

下面是如何创建一个SparkSession

val spark = SparkSession
.builder()
.appName("hirw-test")
.config("spark.some.config.option", "some-value")
.getOrCreate()

SparkSession现在是Spark的新入口点,它替换了旧的SQLContext和HiveContext。注意,保留旧的SQLContext和HiveContext是为了向后兼容。

一旦我们访问了SparkSession,我们就可以开始使用DataFrame和Dataset了。

下面是我们如何使用Hive支持创建SparkSession。

val spark = SparkSession
.builder()
.appName("hirw-hive-test")
.config("spark.sql.warehouse.dir", warehouseLocation)
.enableHiveSupport()
.getOrCreate()

因此,如果您正在使用Spark 2.0或更高版本,建议使用SparkSession。

原文地址:https://www.cnblogs.com/bjxdd/p/12016467.html

时间: 2024-11-09 02:03:56

spark 整合 hive的相关文章

Spark 整合hive 实现数据的读取输出

实验环境: linux centOS 6.7 vmware虚拟机 spark-1.5.1-bin-hadoop-2.1.0 apache-hive-1.2.1 eclipse 或IntelJIDea 本次使用eclipse. 代码: import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.DataFrame; import o

Spark和Hive的整合

Spark和Hive的整合 node1 spark master node2 hive 的服务端-->metastore server 1.拷贝 hive-site.xml 到 spark master的 conf 下 node1 <configuration> <property> <name>hive.metastore.uris</name> <value>thrift://node2:9083</value> <d

hadoop、spark、hive、solr、es与YDB在车辆即席分析上的对比分析

自2012年以来,公安部交通管理局在全国范围内推广了机动车缉查布控系统(简称卡口系统),通过整合共享各地车辆智能监测记录等信息资源,建立了横向联网.纵向贯通的全国机动车缉查布控系统,实现了大范围车辆缉查布控和预警拦截.车辆轨迹.交通流量分析研判.重点车辆布控.交通违法行为甄别查处及侦破涉车案件等应用.在侦破肇事逃逸案件.查处涉车违法行为.治安防控以及反恐维稳等方面发挥着重要作用. 随着联网单位和接入卡口的不断增加,各省市区部署的机动车缉查布控系统积聚了海量的过车数据.截至目前,全国32个省(区.

Spark-Sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive

1.安装Hive 如果想创建一个数据库用户,并且为数据库赋值权限,可以参考:http://blog.csdn.net/tototuzuoquan/article/details/52785504 2.将配置好的hive-site.xml.core-site.xml.hdfs-site.xml放入$SPARK_HOME/conf目录下 [root@hadoop1 conf]# cd /home/tuzq/software/hive/apache-hive-1.2.1-bin [root@hadoo

Spark SQL Hive Support Demo

前提: 1.spark1.0的包编译时指定支持hive:./make-distribution.sh --hadoop 2.3.0-cdh5.0.0 --with-yarn --with-hive --tgz 2.安装完spark1.0: 3.安装与hadoop对应的CDH版本的hive: Spark SQL 支持Hive案例: 1.将hive-site.xml配置文件拷贝到$SPARK_HOME/conf下 hive-site.xml文件内容形如: <?xml version="1.0&

使用spark对hive表中的多列数据判重

本文处理的场景如下,hive表中的数据,对其中的多列进行判重deduplicate. 1.先解决依赖,spark相关的所有包,pom.xml spark-hive是我们进行hive表spark处理的关键. <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version

spark集成hive遭遇mysql check失败的问题

问题: spark集成hive,启动spark-shell或者spark-sql的时候,报错: INFO MetaStoreDirectSql: MySQL check failed, assuming we are not on mysql: Lexical error at line 1, column 5. Encountered: "@" (64), after : "". 环境: spark-1.4 hive-1.2.1 mysql-5.1 jdbc驱动

Spark整合kafka0.10.0新特性(二)

接着Spark整合kafka0.10.0新特性(一)开始 import org.apache.kafka.clients.consumer.ConsumerRecord import org.apache.kafka.common.serialization.StringDeserializer import org.apache.spark.streaming.kafka010._ import org.apache.spark.streaming.kafka010.LocationStrat

presto集群安装&整合hive|mysql|jdbc

Presto是一个运行在多台服务器上的分布式系统. 完整安装包括一个coordinator(调度节点)和多个worker. 由客户端提交查询,从Presto命令行CLI提交到coordinator. coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker中. 目录: 搭建前环境准备 集群计划 连接器 安装步骤 配置文件 运行presto 整合hive测试 整合mysql测试 整合jdbc测试 1.搭建前环境准备 CentOS 6.7 java8 Python3.4.4