Iはハイブのテーブルのリストを取得し、以下のコードに示すように、ハイブのテーブルにアクセスするSparkSessionを使用することができます。
はい、できます。
この場合、私はHive ContextでSparkを使用していますか?
どのようにspark
値を作成したかによって異なります。
SparkSession
は、enableHiveSupportメソッドに付属のBuilder
インターフェイスを持ちます。
enableHiveSupport():ビルダーは、永続的なハイブメタストア、ハイブSERDESのサポート、およびハイブユーザ定義関数への接続を含む、ハイブサポートを有効にします。
この方法を使用した場合、Hiveのサポートが得られます。そうでなければ、あなたはそれを持っていません。
spark.catalog
は何とかHiveに関連していると思われるかもしれません。さて、Hiveサポートを提供することを意図していましたが、デフォルトでカタログはin-memory
です。
カタログ:ユーザーが作成することができ、それを通してカタログインタフェース、ドロップ、変更または照会基礎となるデータベース、テーブル、関数など
spark.catalog
がスパークSQLは、2つの実装が付属していますちょうどインタフェースです - in-memory
(デフォルト)とhive
です。
さて、あなたは自分自身にこの質問をされることがあります。
はハイブサポートが有効になっているかどうかを調べるために、このようspark.conf介するなど、とにかくありますか?私はあなたがにしているので、実際のところ、あなたがこの方法を必要としないあなたはハイブ認識SparkSession
ないか(とあなたが働くかどうかを知るために使用できることを知って何isHiveEnabled
方法または類似はありません
SparkSession
インスタンスを作成する責任があるので、Sparkアプリケーションが何をしているかを知る必要があります)。あなたがSparkSession
インスタンス(例えばspark-shell
またはDatabricks)、特定のSparkSesssion
は、ハイブのサポートは、カタログの実装の種類を確認することです有効になっているかどうかを確認するための唯一の方法が与えられている環境では
。あなたが使用HiveSessionCatalog
が表示された場合
scala> spark.sessionState.catalog
res1: org.apache.spark.sql.catalyst.catalog.SessionCatalog = [email protected]
は、SparkSession
インスタンスはハイブ-認識しています。
spark-shellなどのSparkSessionが与えられたとします。 enableHiveSupport()がこのSparkSessionに対して既に呼び出されているかどうかを知るにはどうしますか?または、このSparkSessionに対してenableHiveSupport()を呼び出すことは可能ですか? – user1888243
@ user1888243非常に良い質問と私は私の答えを拡大する(とポイントにする)それらを使用します。ありがとう! –