Spark 可以从 pyspark 访问 Hive 表,但不能从 spark-submit

新手上路,请多包涵

因此,当从 pyspark 运行时,我会输入(不指定任何上下文):

 df_openings_latest = sqlContext.sql('select * from experian_int_openings_latest_orc')

.. 它工作正常。

但是,当我从 spark-submit 运行我的脚本时,就像

spark-submit script.py 我把下面的

from pyspark.sql import SQLContext
from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName('inc_dd_openings')
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)

df_openings_latest = sqlContext.sql('select * from experian_int_openings_latest_orc')

但这给了我一个错误

pyspark.sql.utils.AnalysisException: u’Table not found: experian_int_openings_latest_orc;’

所以它看不到我的桌子。

我究竟做错了什么?请帮忙

PS Spark 版本为 1.6,在 Amazon EMR 上运行

原文由 Denys 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 678
2 个回答

火花 2.x

如果在没有 启用 Hive 支持 的情况下创建了 SparkSession ,Spark 2.x 中可能会出现相同的问题。

火花 1.x

这很简单。当您使用 PySpark shell 并且 Spark 已构建为支持 Hive 时,默认 SQLContext 实现(可用作 sqlContext )是 HiveContext

在您的独立应用程序中,您使用不提供 Hive 功能的普通 SQLContext

假设其余配置正确,只需替换:

 from pyspark.sql import SQLContext

sqlContext = SQLContext(sc)

from pyspark.sql import HiveContext

sqlContext = HiveContext(sc)

原文由 zero323 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 Spark 2.x (Amazon EMR 5+) 中,如果您不启用 Hive 支持,您将遇到这个问题 spark-submit

 from pyspark.sql import SparkSession
spark = SparkSession.builder.master("yarn").appName("my app").enableHiveSupport().getOrCreate()

原文由 Mike Placentra 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题