spark sql无法访问spark thrift服务器

7kjnsjlb  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(535)

我无法配置sparksql以便可以访问spark-thrift服务器中的配置单元表(不使用jdbc,而是从spark本地访问)
我使用单个配置文件 conf/hive-site.xml 对于spark thrift server和spark sql。我有 javax.jdo.option.ConnectionURL 属性设置为 jdbc:derby:;databaseName=/home/user/spark-2.4.0-bin-hadoop2.7/metastore_db;create=true . 我还设置了 spark.sql.warehouse.dir 指向的绝对路径的属性 spark-warehouse 目录。我和你一起经营储蓄服务器 ./start-thriftserver.sh 我可以观察到嵌入式derby数据库是用 metastore_db 目录。我可以和你联系 beeline ,创建一个表并查看 spark-warehouse 用表的子目录创建的目录。所以在这个阶段是好的。
我启动pyspark shell时启用了配置单元支持 ./bin/pyspark --conf spark.sql.catalogImplementation=hive ,并尝试访问配置单元表:

from pyspark.sql import HiveContext
hc = HiveContext(sc)
hc.sql('show tables')

我犯了这样的错误:
错误xj040:无法使用类加载器sun.misc启动数据库“/home/user/spark-2.4.0-bin-hadoop2.7/metastore_db”。launcher$appclassloader@1b4fb997
错误xsdb6:derby的另一个示例可能已经启动了数据库/home/user/spark-2.4.0-bin-hadoop2.7/metastore\u db
pyspark.sql.utils.analysisexception:u'java.lang.runtimeexception:java.lang.runtimeexception:无法示例化org.apache.hadoop.hive.ql.metadata.sessionhivemetastoreclient;
显然spark正在尝试创建新的derby数据库,而不是使用我放在配置文件中的metastore。如果我停止了thrift服务器,只运行spark,一切正常。我怎么能修好它?
embedded derby metastore数据库可以同时拥有thrift server和spark access吗?或者我需要使用mysql?我没有集群,一切都在本地进行。

9rbhqvlz

9rbhqvlz1#

嵌入式derby metastore数据库可以在本地使用,但对于生产环境,建议使用任何其他metastore数据库。是的,你绝对可以用mysql作为metastore。为此,你必须在 hive-site.xml .
有关详细信息,请参阅配置指南use mysql for the hive metastore。

相关问题