我正在尝试检查配置单元元存储中是否存在表如果不存在,请创建表。如果表存在,则追加数据。
我有以下代码片段:
spark.catalog.setCurrentDatabase("db_name")
db_catalog = spark.catalog.listTables(dbName = 'table_name)
if any(table_name in row for row in db_catalog):
add data
else:
create table
然而,我得到一个错误。
>>> ValueError: Some of types cannot be determined after inferring
我无法解决值错误,因为在配置单元元存储中创建的其他数据库的表也会出现相同的错误。是否有其他方法可以检查配置单元元存储中是否存在表?
6条答案
按热度按时间jjhzyzn01#
您可以使用jvm对象来实现这一点。
py4j套接字用于python功能。其他操作使用jvm
SparkContext
.在spark scala中,您可以直接访问。
vxbzzdmp2#
在pyspark2.4.0中,可以使用以下两种方法之一检查表是否存在。请记住,spark课程(
spark
)已创建。从spark会话的上下文创建sql上下文
使用spark会话目录
我会使用第一种方法,因为第二种方法似乎会触发Spark作业,所以速度较慢。
为了编写或附加表,可以使用以下方法
q7solyqu3#
我们在databricks中使用了以下方法来检查表是否存在,我想这应该可以。
谢谢
尤瓦
bfrts1fy4#
结合两个答案中最好的一个:
希望有帮助。
布伦特
6jjcrrmo5#
另一个建议是避免创建类似列表的结构:
yhxst69z6#
请尝试以下操作: