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()
何が間違っているように思われ、なぜ同じコードがある場所で機能し、別の場所では機能しないのですか?
sqlContext.sql("show tables in 3_db").show()
別の可能性は、 Catalog メソッドを使用することです:
spark = SparkSession.builder.getOrCreate()
spark.catalog.listTables("3_db")
PySparkではこのメソッドはlist
を返し、ScalaではDataFrame
を返すことに注意してください。