Spark SQL操作Hive表

本文详细介绍了如何在Spark中配置和使用Hive支持,包括将Hive的配置文件放入Spark的conf目录,创建和加载Hive表,执行SQL查询,以及进行数据读写操作。此外,还讨论了动态分区、Hive外部表的创建和管理,以及DataFrame与Hive表之间的交互。最后,提到了指定Hive表的存储格式选项,如fileFormat、inputFormat和outputFormat等。

Spark SQL支持从Hive存储中读写数据。然而,Hive存在很多的依赖,而这些依赖又不包含在默认的各类Spark发型版本中。如果将Hive的依赖放入classpath中,Spark将自动加载它们。值得注意的是,这些依赖必须在所有节点中都存在。因为他们需要通过Hive的序列化和反序列化库(SerDes)来访问存储在Hive中的数据。

在Spark中配置Hive,需要将hive-site.xml, core-site.xml, hdfs-site.xml放置到Spark的conf/目录下。

需要操作Hive,必须先实例化SparkSession以获取Hive的支持。包括连接到一个持久化的Hive元存储,支持Hive的序列化以及Hive的UDF。没有部署Hive的用户仍然可以启用Hive支持。如果在hive-site.xml中没有进行配置,上下文将在当前目录自动创建metastore_db,并创建一个由spark.sql.warehouse.dir配置的目录。默认为Spark应用程序启动的当前目录下的Spark -warehouse目录。注意:hive-site.xml中的hive.metastore.warehouse.dir配置项在Spark 2.0.0以后被启用,取而代之的是spark.sql.warehouse.dir,以指定数据库在仓库中的默认位置。使用时,需要将写权限授予启动Spark应用程序的用户。

import java.io.File

import org.apache.spark.sql.{Row, SaveMode, SparkSession}

case class Record(key: Int, value: String)

// warehouseLocation指的是管理数据库和表的默认路径地址
val warehouseLocation = new File("spark-warehouse").getAbsolutePath

val spark = SparkSession
  .builder()
  .appName("Spark Hive Example")
  .config("spark.sql.wa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cheng自牧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值