【发布时间】:2019-05-12 22:48:22
【问题描述】:
当我尝试使用 pyspark 数据框或 sql 时,发生了一件奇怪的事情。虽然它在 ipython 笔记本或 python 控制台中工作,但在 pyspark shell 中运行它时出现“javax.jdo.JDOFatalInternalException:创建事务连接工厂时出错”错误。
简而言之,如果我在 iPython Notebook 或只是 python 终端中运行以下命令,一切正常:
import findspark
findspark.init("C:\Spark\spark-2.3.3-bin-hadoop2.7")
import pyspark # only run after findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark.sql('''select 'spark' as hello ''').show()
当我通过键入“pyspark”打开 pyspark shell 时,我执行以下操作:(SparkSession 已初始化):
spark.sql('''select 'spark' as hello ''').show()
我被抛出了错误:
>>> spark.sql('''select 'spark' as hello ''').show()
2019-05-12 18:41:35 WARN HiveMetaStore:622 - Retrying creating default database after error: Error creating transactional connection factory
javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
...
pyspark.sql.utils.AnalysisException: 'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;'
这很奇怪,知道为什么它在一种环境中有效,而在另一种环境中无效吗?谢谢!
编辑: 更多错误:
java.sql.SQLException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true, username = root. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
【问题讨论】:
标签: python hive pyspark pyspark-sql