【问题标题】:SPARK SQL fails if there is no specified partition path available如果没有指定的可用分区路径,SPARK SQL 将失败
【发布时间】:2017-12-21 22:45:04
【问题描述】:

我在 EMR 中使用 Hive Metastore。我可以通过 HiveSQL 手动查询表。
但是当我在 Spark Job 中使用同一张表时,它说 Input path does not exist: 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..")

我提交了如下工作以使用 hive 目录表。

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

【问题讨论】:

  • 尝试在路径中使用 's3a://' 而不是 's3://'
  • s3:// 与其他表配合良好,同一张表在 Hive 中也能正常工作!
  • 1) 如果您想与 Hive 对话,请停止使用 SQLContext。 2)您需要在 SparkSession 上明确enableHiveSupport()
  • @cricket_007:是的!这是我之前的例子。我已在新版本中更正了这一点!谢谢

标签: python hadoop apache-spark hive pyspark


【解决方案1】:

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

检查 s3... 如果它丢失了,或者你删除了它,你需要从 Hive 运行 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()

【讨论】:

  • 我得到同样的错误。我设置了spark = SparkSession.builder.appName("Hive Example").config("spark.sql.hive.verifyPartitionPath", "false").enableHiveSupport().getOrCreate() 引起:org.apache.hadoop.mapred.InvalidInputException:输入路径不存在:s3://
  • 好吧,那这个属性不是你的问题……你的问题是如何配置 Spark
  • 您甚至在哪里读到了上述错误的解决方案?你能显示完整的堆栈跟踪吗?
  • 好的。我以为我需要设置该配置。但似乎不是。
  • 我已将我的问题修改为I have deleted my above partition path in s3://.. but it still works in my Hive without Dropping Partition at table level. but its not working in pyspark anyways,请看一下。很抱歉造成混乱
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2023-01-28
  • 2021-10-29
  • 2018-04-08
  • 2017-02-07
  • 2017-05-03
  • 2022-12-18
相关资源
最近更新 更多