web-dev-qa-db-fra.com

Affichage des tables d'une base de données spécifique avec Pyspark et Hive

Avoir des bases de données et des tables dans l'instance Hive. Je voudrais montrer des tableaux pour une base de données spécifique (disons 3_db).

+------------------+--+
|  database_name   |
+------------------+--+
| 1_db             |
| 2_db             |
| 3_db             |
+------------------+--+

Si j'entre là-bas depuis le complexe bash-nothing, je fais juste ce qui suit:

show databases;
show tables from 3_db;

Lorsque j'utilise pyspark via ipython notebeook - mes astuces bon marché ne fonctionnent pas là-bas et me donnent une erreur sur la deuxième ligne (affichez les tableaux de 3_db) à la place:

sqlContext.sql('show databases').show()
sqlContext.sql('show tables from 3_db').show()

Qu'est-ce qui semble mal et pourquoi le même code fonctionne-t-il à un endroit et ne fonctionne-t-il pas à un autre?

10
Keithx
sqlContext.sql("show tables in 3_db").show()
18

Une autre possibilité consiste à utiliser les méthodes Catalogue :

spark = SparkSession.builder.getOrCreate()
spark.catalog.listTables("3_db")

Sachez simplement que dans PySpark, cette méthode renvoie un list et dans Scala, elle renvoie un DataFrame.

1
aelesbao