2017-01-15 27 views
0

JDBC経由でthriftserver経由でspark-sqlテーブルを公開しようとしていますが、正常に接続されたように見えますが動作しません。これまで私が試したことは次のとおりです。spark-SQL CLIで利用可能なテーブルはthriftserverで利用できません

データベースのセットアップ:一部を返さspark.sql("SELECT * FROM hive_tableX LIMIT 1").show():pysparkで

  • 私はtableX
  • が、私はそのテーブルを照会hive_tableX
  • として.saveAsTableを行ったとして、一時ビューを作成し、寄木細工のファイルをロードデータ
  • この時点で、私のコードはテーブル情報をhivestoreに保存していますよね?
  • 火花-SQLから問い合わせる

  • 私はその後、spark-sqlを実行し、スパークSQLシェルは
  • USE default
  • show tables;を起動 - >私はhive_tableX、そこに私の表を参照してください。
  • SELECT * FROM hive_tableX LIMIT 1と私はいくつかの成功した結果を見る。
  • このように、私のテーブルがハイブのメタストアに保存されていることが確認されました。

は、私は次thriftserver

  • ./sbin/start-thriftserver.sh

をオンにし、私は私はthriftserver接続

  • !connect jdbc:hive2://localhost:10000をテストすることができるビーラインをオンにする(A use default;
  • およびshow tables; - >そこには何もありません。

私のテーブルはどこですか?別の倉庫か何かを指しているかのようなものですか?

編集:私は私のthriftserverは、右の倉庫のディレクトリを使用していないと思うので、私は、設定オプションを指定して、それを起動しようとしている:

  • [まだ何も] sbinに/ --hiveconf spark.sql.warehouse.dir =/code/spark/thrift/spark-warehouse
  • [まだなにも] sbin/start-thriftserver.sh --conf spark.sql。warehouse.dir = /コード/火花/リサイクル/火花倉庫

編集:wherehouseが作成された場所と同じ物理ディレクトリにそれを開始は、トリックを行うようです。しかし、私はプログラム的にパスを他のものに設定し、それをどこかで起動する方法はわかりません。

+0

ところで、寄木細工の 'SELECT * FROM parquet。\' parquet/file/location \ 'LIMIT 1'で直接選択/作成できます。 – mrsrinivas

+0

spark-shell/sqlが起動した同じユーザーをサーバから削除しようとします。ユーザーが** spark **の場合、接続文字列は '!connect jdbc:hive2:// localhost:10000 spark spark' – mrsrinivas

+0

問題は、私がスパークウェアハウスの場所とは異なるディレクトリ位置しています。実際にそのディレクトリに実際にパスを入れる方法を知る必要があります。 – Kristian

答えて

0

この特定の問題の解決策は、私がspark-wherehousemetastore_dbと異なるディレクトリからの退却を開始したことでした。

私が正しいディレクトリから起動すると、期待どおりに動作し、テーブルが利用可能になりました。

+1

**リモートストアデータベースをメタストアに使用することは別の解決策です。私は、ローカルファイル内のスキーマに関する1つの問題を考えることができます。メタストアファイルが壊れていると、スパークテーブルのスキーマ全体が緩んでしまいます。 – mrsrinivas

関連する問題