【问题标题】:hive table does not exist in spark jobspark作业中不存在hive表
【发布时间】:2018-06-02 11:36:03
【问题描述】:

我在 EMR 中使用 Hive Metastore。
我可以通过 HiveSQL 或 SparkSQL 手动查询表。
但是当我在 Spark Job 中使用同一张表时,它会显示 找不到表或视图

File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 69, in deco pyspark.sql.utils.AnalysisException: 
  u"Table or view not found: `logan_test`.`salary_csv`; line 1 pos 21;
'Aggregate [unresolvedalias(count(1), None)]
+- 'UnresolvedRelation `logan_test`.`salary_csv`

这是我的完整代码

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

【问题讨论】:

    标签: python hadoop apache-spark hive pyspark


    【解决方案1】:

    看起来您正在使用 Spark 2,因此 SQLContextHiveContext 应该在您 enableHiveSupport() 之后替换为 SparkSession.sql()

    除了.sql(),您可以使用SparkSession.table() 来获取整个表的DataFrame,然后使用count() 跟随它,然后是您想要的任何其他查询。

    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder.enableHiveSupport().appName("Hive Example").getOrCreate()
    salary_csv = spark.table("logan_test.salary_csv")
    print(salary_csv.count())
    

    【讨论】:

    • 你的回答很聪明,所以+1;但我在另一个答案中得到了我想要的东西。
    • 用dataframe代替sql()有什么好处?
    • HIveContext 已弃用,您不应依赖它。无论如何,Sql 函数都会返回一个数据框。这里的优点是您的数据框是整个表的惰性对象,而不仅仅是行数。
    • 谢谢。那么在 spark 中执行 HIVE SQL 的最佳方法是什么?在某些情况下,我想编写自己的 sql 并不仅运行数据帧。
    • spark.sql("SELECT count(*) from logan_test.salary_csv") 可以正常工作。 .sql() 方法只是使用 DataFrame API 的另一种方式......两者都编译为类似的执行计划
    【解决方案2】:

    您导入了 HiveContext,但初始化了不支持 Hive 查询的标准 SQLContext。应该是:

    sqlContext = HiveContext(sparkContext=sc)
    

    【讨论】:

    • 我还需要使用sc = SparkContext(appName = "test")吗?
    猜你喜欢
    • 2018-04-08
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多