【发布时间】:2019-04-21 10:21:56
【问题描述】:
我正在尝试通过 Pyspark 从 Hive 表中读取数据。我已经成功地在 Hive 和 spark 之间建立了连接。我还可以看到数据库中存在的表,但是当我尝试查询表时出现此错误:
代码:
spark.sql("select count(*) from my_table").show(truncate = False)
错误:
Py4JJavaError: 调用 o90.showString 时出错
【问题讨论】:
我正在尝试通过 Pyspark 从 Hive 表中读取数据。我已经成功地在 Hive 和 spark 之间建立了连接。我还可以看到数据库中存在的表,但是当我尝试查询表时出现此错误:
代码:
spark.sql("select count(*) from my_table").show(truncate = False)
错误:
Py4JJavaError: 调用 o90.showString 时出错
【问题讨论】:
您可以使用SQLContext() 尝试此解决方案:
from pyspark import SparkContext
from pyspark.sql import SQLContext
sc = SparkContext()
sqlC = SQLContext(sc)
sqlC.sql("select count(*) from my_table").show(truncate = False)
或者使用HiveContext()试试这个:
from pyspark import SparkContext
from pyspark.sql import HiveContext
sc = SparkContext()
hivctx = HiveContext(sc)
hivctx.sql("select count(*) from my_table").show(truncate = False)
【讨论】:
my_table的类型吗?
UTF-8 或null 字符?
df.registerTempTable('testTable') 然后spark.sql('select count(*) from testTable').show()。 不要从 hive 数据库中读取。检查你是否得到同样的错误!