我在 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(使用前将#替换为@)