Spark持久表在其他节点中不可用

时间:2019-01-16 15:20:02

标签: apache-spark pyspark

我有一个简单的Spark(2.3.0)独立集群,其中有1个主服务器和2个工作器(node-1和node-2)。我通过在节点1上使用带有pyspark的saveAsTable命令将数据框作为持久性表保存到Hive Metastore:

>>> df.write.saveAsTable("test")

工作正常。我可以在该节点(节点1)上重新启动pyspark,然后可以看到该表仍然存在:

>>> spark.sql('show tables').show()
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
| default|     test|      false|
+--------+---------+-----------+

但是当我转到另一个节点(节点2)时,我得到以下信息:

>>> spark.sql('show tables').show()
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
+--------+---------+-----------+

有人可以帮助我了解如何使用节点2中的表吗?

1 个答案:

答案 0 :(得分:0)

这是因为metastore数据本地存储在Apache Derby数据库中。我通过使用mysql而不是derby解决了这个问题。