PySpark 无法通过 sparkContext/hiveContext 读取 Hive ORC 事务表?我们可以使用 Pyspark 更新/删除配置单元表数据吗?

Posted

技术标签:

【中文标题】PySpark 无法通过 sparkContext/hiveContext 读取 Hive ORC 事务表?我们可以使用 Pyspark 更新/删除配置单元表数据吗?【英文标题】:PySpark is not able to read Hive ORC transaction table through sparkContext/hiveContext ? Can we update/delete hive table data using Pyspark? 【发布时间】:2019-08-01 14:57:55 【问题描述】:

我尝试使用 PySpark 访问 Hive ORC 事务表(在 HDFS 上有基础增量文件),但我无法通过 sparkContext/hiveContext 读取事务表。

/mydim/delta_0117202_0117202

/mydim/delta_0117203_0117203

【问题讨论】:

【参考方案1】:

Hive-ACID 表尚未正式支持 Spark,请获取 full dump/incremental dump of acid table 到常规的 hive orc/parquet 分区表,然后使用 spark 读取数据。

有一个 Open Jira saprk-15348 以添加对读取 Hive ACID 表的支持。

如果您在 Acid 表(来自 hive)上运行 major compaction,则 spark 只能读取 base_XXX 目录,但不能读取增量目录 Spark-16996在这个 jira 中解决。

有一些解决方法可以使用此链接中提到的SPARK-LLAP 读取酸表。

我认为HDP-3.X开始HiveWareHouseConnector能够支持读取HiveAcid表。

【讨论】:

我已经测试过了。从 CDP - HDP-3.0 开始,使用带有 Spark 的 Hive Warehouse Connector 库/插件将为 Hive 表(ORC 格式表)启用 ACID 合规性

以上是关于PySpark 无法通过 sparkContext/hiveContext 读取 Hive ORC 事务表?我们可以使用 Pyspark 更新/删除配置单元表数据吗?的主要内容,如果未能解决你的问题,请参考以下文章

PySpark (Python):通过 SparkContext.newAPIHadoopFile 加载多行记录

Pyspark:Spyder 中的 SparkContext 定义引发 Java 网关错误

3 pyspark学习---sparkContext概述

Jupyter中的PySpark SparkContext名称错误'sc'

为 MRJob/pySpark 中的每个 SparkStep 创建新的 SparkContext

ImportError:无法在 IPython 中导入名称“SparkContext”