spark-sql如何删除表_SparkSQL数据源之Hive数据库
Apache Hive是Hadoop上的SQL引擎,Spark SQL编译时可以包含Hive支持,也可以不包含。包含Hive支持的Spark SQL可以支持Hive表访问、UDF(用户自定义函数)以及 Hive 查询语言(HiveQL/HQL)等。需要强调的一点是,如果要在Spark SQL中包含Hive的库,并不需要事先安装Hive。一般来说,最好还是在编译Spark SQL时引入Hive支持,这样就可以使用这些特性了。如果你下载的是二进制版本的 Spark,它应该已经在编译时添加了 Hive 支持。
若要把Spark SQL连接到一个部署好的Hive上,你必须把hive-site.xml复制到 Spark的配置文件目录中($SPARK_HOME/conf)。即使没有部署好Hive,Spark SQL也可以运行。需要注意的是,如果你没有部署好Hive,Spark SQL会在当前的工作目录中创建出自己的Hive 元数据仓库,叫作 metastore_db。此外,如果你尝试使用 HiveQL 中的 CREATE TABLE (并非 CREATE EXTERNAL TABLE)语句来创建表,这些表会被放在你默认的文件系统中的 /user/hive/warehouse 目录中(如果你的 classpath 中有配好的 hdfs-site.xml,默认的文件系统就是 HDFS,否则就是本地文件系统)。
内嵌Hive应用
如果要使用内嵌的Hive,什么都不用做,直接用就可以了。
可以通过添加参数初次指定数据仓库地址:–conf spark.sql.warehouse.dir=hdfs://hadoop102/spark-wearhouse
注意:如果你使用的是内部的Hive,在Spark2.0之后,spark.sql.warehouse.dir用于指定数据仓库的地址,如果你需要是用HDFS作为路径,那么需要将core-site.xml和hdfs-site.xml 加入到Spark conf目录,否则只会创建master节点上的warehouse目录,查询时会出现文件找不到的问题,这是需要使用HDFS,则需要将metastore删除,重启集群。
外部Hive应用
如果想连接外部已经部署好的Hive,需要通过以下几个步骤。
将Hive中的hive-site.xml拷贝或者软连接到Spark安装目录下的conf目录下。
打开spark shell,注意带上访问Hive元数据库的JDBC客户端
$ bin/spark-shell --jars mysql-connector-java-5.1.27-bin.jar
运行Spark SQL CLI
Spark SQL CLI可以很方便的在本地运行Hive元数据服务以及从命令行执行查询任务。在Spark目录下执行如下命令启动Spark SQL CLI:
./bin/spark-sql
代码中使用Hive
添加依赖:
<dependency><groupId>org.apache.sparkgroupId><artifactId>spark-hive_2.11artifactId><version>2.1.1version>dependency>
<dependency><groupId>org.apache.hivegroupId><artifactId>hive-execartifactId><version>1.2.1version>dependency>
创建SparkSession时需要添加hive支持
val warehouseLocation: String = new File("spark-warehouse").getAbsolutePathval spark = SparkSession.builder().appName("Spark Hive Example").config("spark.sql.warehouse.dir", warehouseLocation).enableHiveSupport().getOrCreate()
注意:蓝色部分为使用内置Hive需要指定一个Hive仓库地址。若使用的是外部Hive,则需要将hive-site.xml添加到ClassPath下
简书:https://www.jianshu.com/u/0278602aea1d
CSDN:https://blog.csdn.net/u012387141
spark-sql如何删除表_SparkSQL数据源之Hive数据库相关推荐
- Spark SQL之External DataSource外部数据源(二)源代码分析
上周Spark1.2刚公布,周末在家没事,把这个特性给了解一下,顺便分析下源代码,看一看这个特性是怎样设计及实现的. /** Spark SQL源代码分析系列文章*/ (Ps: External Da ...
- 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作
转载自 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作 供稿 | eBay ADI-Carmel Team 作者 | 金澜涛 编辑 | 顾欣怡 本文7309字,预计阅读时 ...
- 用一条sql语句删除表中所相同记录
用一条sql语句删除表中所相同记录如下一.具有主键的情况 a.具有唯一性的字段id(为唯一主键) delete table where id not in ( select max(id) from ...
- SQL server删除表信息代码
SQL server删除表信息代码: 1.delete删除: delete * from table--只是删除了表中的内容,并没有把表删除. 2.drop删除: drop table 表名--把整个 ...
- SQL Server删除表
DROP TABLE 语句从数据库中删除一个或多个表. 在上面语法中, 首先, database_name 指定要删除的表的名称. 其次,指定创建表的数据库的名称以及表所属的模式的名称.数据库名称是可 ...
- Sql语句——删除表数据drop、truncate和delete的用法
一.SQL中的语法 1.drop table 表名称 eg: drop table dbo.Sys_Test 2.truncate tabl ...
- mysql重复数据只取一条数据_My sql 中删除表中重复记录?只保留一条
匿名用户 1级 2018-08-20 回答 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 sel ...
- SQL Server删除表及删除表中数据的方法
SQL Server中如何删除表,如何删除表中的数据. 删除表的T-SQL语句为: drop table <表名> drop是丢弃的意思,drop table表示将一个表彻底删除掉. 删除 ...
- sql语句-删除表数据drop、truncate和delete的用法
一.SQL中的语法 1.drop table 表名称 eg: drop table course 2.truncate table 表名称 eg: truncate table course 3.de ...
最新文章
- java基础入门传智播客 源码_Java-_2020年版Java零基础视频教程(Java 0基础,Java初学入门)魔鬼讲师老杜出品...
- IDP申请直到软件上架流程 - iOS
- (0097)iOS开发之应用间的分享系列(2)
- WIN10 OpenGL GLFW+GLAD 开发环境搭建
- MFC创建及读写ini文件操作(转)
- 软件项目管理概览----版本控制
- 栈和队列之用java实现栈
- arcgis字段计算器--随机数
- Qt工作笔记-QTabWidget插入widget(重要的是编程思想)
- python中多条件语句_Python中的带条件语句
- 在Laravel中使用自己的类库三种方式
- C++最小函数模板demo
- [UE4]复制引起的重复对象
- Java GC种类以及触发时机
- 不同cpu服务器虚拟迁移,虚拟机迁移时,提示CPU不兼容问题求解,谢谢!
- unity3d手游破解(一)
- D. Lizard Era: Beginning
- Hyper-V 的用途与安装
- linux系统start x,linux的startx问题
- 纯净ROM如何制作?手把手教你一键精简内置推广
热门文章
- 【深度学习】基于Keras的手写体识别
- latex Label ‘ ‘ multiply defined
- C语言程序设计:现代方法 中文高清PDF版下载
- 广工十四届校赛 count 矩阵快速幂
- webpack+ES6+Sass搭建多页面应用
- LeetCode344反转字符串
- QObject类 moc处理后代码
- (转载) 标准C中的字符串操作函数
- 如何使用本地账户完整安装 SharePoint Server
- [转] Official Microsoft Team Blogs / Microsoft Blogs