【发布时间】: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