web-dev-qa-db-ja.com

PysparkおよびHiveを使用して特定のデータベースのテーブルを表示する

Hiveインスタンス内にいくつかのデータベースとテーブルがあります。特定のデータベースのテーブルを表示したいと思います(3_dbとしましょう)。

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

そこでbash-nothingからbeelineを入力すると、次のようになります。

show databases;
show tables from 3_db;

Ipython notebeookを介してpysparkを使用している場合、私の安価なトリックはそこで機能せず、代わりに2行目にエラーを表示します(3_dbのテーブルを表示)。

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

何が間違っているように思われ、なぜ同じコードがある場所で機能し、別の場所では機能しないのですか?

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

別の可能性は、 Catalog メソッドを使用することです:

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

PySparkではこのメソッドはlistを返し、ScalaではDataFrameを返すことに注意してください。

1
aelesbao