我想通过pysparksql在databricks上的数据库中查找具有特定列的表。
我使用以下代码,但它不工作。https://medium.com/@rajnishkumargarg/find-all-the-tables-by-column-name-in-hive-51caebb94832
在sql server上我的代码:
SELECT Table_Name, Column_Name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'YOUR_DATABASE'
AND COLUMN_NAME LIKE '%YOUR_COLUMN%'
但是,我不知道如何在pysparksql上做同样的事情?
谢谢
2条答案
按热度按时间qeeaahzv1#
sparksession有一个属性目录。此目录的方法listtables返回sparksession已知的所有表的列表。使用此列表,您可以使用listcolumns查询每个表的所有列
印刷品
两种方法,
listTables
以及listColumns
如果要将搜索限制为单个数据库,请接受数据库名称作为可选参数。wqnecbli2#
正如沃纳提到的,sparksession确实具有目录属性。
如果我理解正确,您希望得到具有特定列的表。您可以尝试以下代码(很抱歉用scala代码代替python):
请注意,我这样做collect如果您有很多表/数据库,它可能会导致oom错误,我这样做collect的原因是,与listtables或listdatabases方法相比,listcolumns需要获得dbname和tablename,并且它没有任何与表匹配的唯一列id。
因此,该列的搜索将在驱动程序的本地完成。
希望这有帮助。