如果没有可用的指定分区路径,SPARK SQL 会失败

2024-04-14

我在 EMR 中使用 Hive Metastore。我可以通过 HiveSQL 手动查询表。
但是当我在 Spark Job 中使用同一个表时,它说输入路径不存在:s3://

导致:org.apache.hadoop.mapred.InvalidInputException:输入路径 不存在:s3://...

我已经删除了 s3://.. 中的上述分区路径,但它仍然可以在我的 Hive 中工作,而无需在表级别删除分区。但无论如何它在 pyspark 中不起作用

这是我的完整代码

from pyspark import SparkContext, HiveContext
from pyspark import SQLContext
from pyspark.sql import SparkSession

sc = SparkContext(appName = "test")
sqlContext = SQLContext(sparkContext=sc)
sqlContext.sql("select count(*) from logan_test.salary_csv").show()
print("done..")

我提交了如下工作以使用配置单元目录表。

spark-submit test.py --files /usr/lib/hive/conf/hive-site.xml


我在 HDFS 上遇到了类似的错误,其中 Metastore 为表保留了一个分区,但目录丢失了

检查 s3...如果丢失,或者您删除了它,则需要运行MSCK REPAIR TABLE来自蜂巢。有时这不起作用,你实际上需要一个DROP PARTITION

该属性默认为 false,但您可以通过传递SparkConf反对SparkContext

from pyspark import SparkConf, SparkContext

conf = SparkConf().setAppName("test").set("spark.sql.hive.verifyPartitionPath", "false"))
sc = SparkContext(conf = conf)

或者,Spark 2 方式是使用 SparkSession。

from pyspark.sql import SparkSession

spark = SparkSession.builder \
...     .appName("test") \
...     .config("spark.sql.hive.verifyPartitionPath", "false") \
...     .enableHiveSupport()
...     .getOrCreate()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果没有可用的指定分区路径,SPARK SQL 会失败 的相关文章

随机推荐