gpt4 book ai didi

apache-spark - 通过 Spark 加载的表在 Hive 中无法访问

转载 作者:可可西里 更新时间:2023-11-01 14:19:16 24 4
gpt4 key购买 nike

无法从 Hive 访问通过 Spark (pyspark) 创建的 Hive 表。

df.write.format("orc").mode("overwrite").saveAsTable("db.table")

从 Hive 访问时出错:

Error: java.io.IOException: java.lang.IllegalArgumentException: bucketId out of range: -1 (state=,code=0)

在 Hive 中成功创建表,并能够在 spark 中读回该表。表元数据可访问(在 Hive 中),表中的数据文件(在 hdfs 中)目录。

Hive 表的 TBLPROPERTIES 是:

  'bucketing_version'='2',                         
'spark.sql.create.version'='2.3.1.3.0.0.0-1634',
'spark.sql.sources.provider'='orc',
'spark.sql.sources.schema.numParts'='1',

我还尝试使用其他解决方法创建表,但在创建表时出现错误:

df.write.mode("overwrite").saveAsTable("db.table")

df.createOrReplaceTempView("dfTable")
spark.sql("CREATE TABLE db.table AS SELECT * FROM dfTable")

错误:

AnalysisException: u'org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Table default.src failed strict managed table checks due to the following reason: Table is marked as a managed table but is not transactional.);'

堆栈版本详细信息:

Spark2.3

Hive3.1

Hortonworks 数据平台 HDP3.0

最佳答案

从 HDP 3.0 开始,Apache Hive 和 Apache Spark 的目录是分开的,它们使用自己的目录;也就是说,它们是互斥的——Apache Hive 目录只能被 Apache Hive 或这个库访问,而 Apache Spark 目录只能被 Apache Spark 中现有的 API 访问。换句话说,一些功能,如 ACID 表或 Apache Ranger with Apache Hive 表只能通过 Apache Spark 中的这个库获得。 Hive 中的这些表不应直接在 Apache Spark API 中访问。

  • 下面的文章解释了这些步骤:

Integrating Apache Hive with Apache Spark - Hive Warehouse Connector

关于apache-spark - 通过 Spark 加载的表在 Hive 中无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52761391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com