You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HDP 2.6.5(Spark 2.3.0)下使用HWC读取ACID Hive表方法咨询

使用Hive Warehouse Connector(HWC)读取ACID Hive表的步骤及版本支持说明

我来帮你梳理清楚使用HWC读取ACID Hive表的具体操作步骤,以及你关心的版本支持问题:

一、使用HWC读取ACID Hive表的详细步骤

1. 先搞定环境准备

  • 首先确保你的Spark集群已经集成了HWC:如果是HDP环境,通常默认会配置好HWC的jar包;如果是手动部署,得把对应版本的hive-warehouse-connector-assembly-<version>.jar放到Spark的classpath里,比如启动Spark时通过--jars参数指定,或者在spark-defaults.conf中配置spark.jars参数。
  • 确认Hive Metastore服务正常运行,而且你的ACID表是ORC格式——HWC只支持ORC格式的ACID表哦。

2. 配置Spark会话

启动Spark应用时需要添加专属配置来启用HWC,这里给你两种方式:

方式一:通过命令行参数启动spark-shell

spark-shell \
  --master yarn \
  --deploy-mode client \
  --jars /path/to/hive-warehouse-connector-assembly-<version>.jar \
  --conf spark.sql.hive.hwc.execution.mode=spark \
  --conf spark.datasource.hive.warehouse.load.staging.dir=/tmp/hwc-staging \
  --conf spark.sql.extensions=com.hortonworks.spark.sql.hive.HiveWarehouseSessionExtension

方式二:在代码中配置SparkSession(以Scala为例)

import com.hortonworks.hwc.HiveWarehouseSession
import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder()
  .appName("Read Hive ACID Table via HWC")
  .config("spark.sql.hive.hwc.execution.mode", "spark")
  .config("spark.datasource.hive.warehouse.load.staging.dir", "/tmp/hwc-staging")
  .config("spark.sql.extensions", "com.hortonworks.spark.sql.hive.HiveWarehouseSessionExtension")
  .enableHiveSupport()
  .getOrCreate()

// 创建HWC会话实例
val hive = HiveWarehouseSession.session(spark).build()

3. 读取ACID表数据

这里有两种常用的读取方式,任选其一即可:

方式一:使用HWC的API执行SQL查询

// 执行查询并读取结果为DataFrame
val acidTableDF = hive.executeQuery("SELECT * FROM your_acid_db.your_acid_table").read()
// 查看数据
acidTableDF.show()

方式二:使用Spark DataSource API加载表

val acidTableDF = spark.read
  .format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector")
  .option("database", "your_acid_db")
  .option("table", "your_acid_table")
  .load()
acidTableDF.show()

4. 一些关键注意事项

  • 一定要保证HWC版本和你的HDP/Hive版本兼容,比如HDP 3.x对应HWC 1.x系列,版本不匹配容易出各种问题。
  • 读取ACID表不需要强制开启Hive LLAP服务,但如果想提升查询性能,可以配置LLAP相关参数。
  • 千万别用Spark原生的Hive数据源去读ACID表,肯定会报错的,必须用HWC才行。

二、HWC是否仅支持HDP 3版本?

答案是否定的,HWC的版本和Hortonworks的不同发行版是对应的:

  • HDP 2.x:有早期的HWC版本(比如0.x系列),不过功能受限,只能支持部分ACID表的读取操作,稳定性也不如HDP 3.x的版本。
  • HDP 3.x:这是HWC功能最完善的适配版本(对应HWC 1.x系列),支持ACID表的读写、事务操作等完整功能,也是官方推荐使用的版本。
  • CDP(Cloudera Data Platform):后续HWC被整合到CDP中,不同的CDP版本也有对应的适配HWC版本,还支持更多新特性。

简单来说,HDP 3是HWC体验最好的版本,但不是唯一支持的版本,HDP 2.x也能用上早期版本,只是功能和稳定性稍弱。

内容的提问来源于stack exchange,提问作者varadharaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:32:49