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

Den*_*nis 16 python hadoop apache-spark pyspark

所以,当从pyspark运行时我会输入(没有指定任何上下文):

df_openings_latest = sqlContext.sql('select * from experian_int_openings_latest_orc')
Run Code Online (Sandbox Code Playgroud)

..它工作正常.

但是,当我运行我的脚本时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')
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误

pyspark.sql.utils.AnalysisException:你找不到:experian_int_openings_latest_orc;'

所以它没有看到我的表.

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

PS Spark版本在Amazon EMR上运行1.6

zer*_*323 25

Spark 2.x

如果SparkSession在未启用Hive支持的情况下创建Spark 2.x,则可能会出现同样的问题.

Spark 1.x

这很简单.当您使用PySpark shell时,Spark已经使用Hive支持构建,默认SQLContext实现(可用作一个sqlContext)是HiveContext.

在您的独立应用程序中,您使用plain SQLContext,它不提供Hive功能.

假设配置的其余部分是正确的,只需替换:

from pyspark.sql import SQLContext

sqlContext = SQLContext(sc)
Run Code Online (Sandbox Code Playgroud)

from pyspark.sql import HiveContext

sqlContext = HiveContext(sc)
Run Code Online (Sandbox Code Playgroud)


Mik*_*tra 10

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

from pyspark.sql import SparkSession
spark = SparkSession.builder.master("yarn").appName("my app").enableHiveSupport().getOrCreate()
Run Code Online (Sandbox Code Playgroud)