python - 使用 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"
附加信息:
1.-我还尝试配置warehouse_location(参考:https ://spark.apache.org/docs/latest/sql-data-sources-hive-tables.html )和新的相同错误。
2.- 在这两种情况下(bash 终端和 Python 终端)使用“显示表”时都显示一个空表。
其他链接:
解决方案
推荐阅读
- php - 在单个查询中选择具有多个值的最后 N 行
- php - 当我只提交 html iframe 代码时出现 MethodNotAllowedHttpException
- php - 有没有一个php cdn?
- amazon-web-services - AWS API 网关上的剥离标头
- elasticsearch - 如何根据弹性搜索中的关键字段进行查询
- c# - AsyncPageable
异步获取第一个结果 - sql - 我们可以在 PostgreSql 的类型表中添加列吗?
- android - 如何根据 Cloud Firestore 中的日期读取数据
- mysql - 如何为第一个表的空白或空值应用左连接?
- android - 在旧版 Android 上使用 PdfDocument 生成巨大的 PDF 文件