首页 > 解决方案 > 使用 Python 在 PySpark 上查询 SQL 失败 - 未找到表或视图

问题描述

我正在尝试在从 SSH 连接到外部服务器的 Python 上使用 PySpark 从 HIVE 进行查询,但我失败了(第一张图片)。

细节:

IDE:
VisualStudio Code

Bash Profile:
if [ -f~ /.bashrc ]; then
        . ~/.bashrc
fi
PATH = $PATH:$HOME/.local/bin:$HOME/bin
export HADOOP_HOME=/usr/hdp/2.6.5.0-292/hadoop
export HDP_VERSION=2.6.5.0-292
export SPARK_HOME=/usr/hdp/current/spark2-client
export SPARK_MAJOR_VERSION=2
export SPARK_CONF_DIR=/etc/spark2/conf
export PATH

这很奇怪,因为如果我打开一个 bash 终端并写:

export HADOOP_HOME=/usr/hdp/2.6.5.0-292/hadoop
export HDP_VERSION=2.6.5.0-292
export SPARK_HOME=/usr/hdp/current/spark2-client
export SPARK_MAJOR_VERSION=2
export SPARK_CONF_DIR=/etc/spark2/conf
pyspark --conf name="test_py37" --conf spark.ui.enabled=false --driver-memory 10g

要打开 PySpark(在 bash 终端上),我可以获得正确的查询(第二张图片)。

在第一张图片中,我还尝试将第 10 到 13 行替换为第 15 到 17 行(SparkContext 和 SparkSession),我得到了同样的错误。所有这张图片(第一张)使用 Python 3.7

你能帮我吗?

最好的问候,米尔科。

PS:图片 01 = 红色方块 / 图片 02 = 红色边框的白色方块 祝您有美好的一天!

蟒蛇代码:

from pyspark.sql import *
from pyspark import *
import os
conf = SparkConf().setAppName("test_py37")
conf = SparkConf()
conf.set('spark.jars', '/usr/hdp/current/sqoop-client/lib/ojdbc7.jar,/usr/hdp/current/sqoop-client/lib/terajdbc4.jar,/usr/hdp/current/sqoop-client/lib/tdgssconfig.jar')
 conf.set('spark.port.maxRetries', '100')
 conf.set('spark.driver.memory', '10G')
 conf.set('spark.ui.enabled', "false")
 sc = SparkContext(conf = conf)  
 sc.setLogLevel('ERROR')  
 df = HiveContext(sc)
 df.sql("select * from database.table limit 10").show()

第二次尝试(同样的错误):

sc = SparkSession.builder.config(conf = conf).enableHiveSupport().getOrCreate() 
df = SQLContext(sc)
df.sql("select * from database.table limit 10").show()

错误:

pyspark.sql.utils.AnalysisException: "Table or view not found: 'database/schema' . 'table'; line 1 pos 4;\n'GlobalLimit 10\n+- 'LocalLimit 10 \n +- 'Project [*]\n +- 'UnresolvedRelation 'database/schema'.'table'\n"

图片01 图片02

附加信息:

1.-我还尝试配置warehouse_location(参考:https ://spark.apache.org/docs/latest/sql-data-sources-hive-tables.html )和新的相同错误。

2.- 在这两种情况下(bash 终端和 Python 终端)使用“显示表​​”时都显示一个空表。

其他链接:

  1. 使用 pyspark 更改配置单元表后的架构错误

  2. 在 pyspark 中查询 HIVE 表

  3. spark作业中不存在hive表

标签: pythonsqlpysparkhive

解决方案


推荐阅读