2017-04-12 10 views
0

今Microsoft Power BIのクエリエンジンのようにSpark SQLをテストしています。 私が持っているもの:Spark SQL + Power BI OOMを防ぐ方法

  1. 私は分析する必要があるデータを持つ巨大なカサンドラのテーブル。
  2. 8コアと16GbのRAMを備えたAmazonサーバー。
  3. このサーバーのSpark Thriftサーバー。 Sparkのバージョン - 1.6.1
  4. 巨大なCassandraテーブルにマップされたハイブテーブル。

create table data using org.apache.spark.sql.cassandra options (cluster 'Cluster', keyspace 'myspace', table 'data');

Power BIをSparkに接続しようとするまでは、すべて問題ありませんでした。問題は、Power BIが巨大なCassandraテーブルからすべてのデータを取得しようとしていることです。明らかにSpark Thrift ServerはOOMエラーでクラッシュします。この場合、Spark Thrift ServerにRAMを追加することはできません。生データを持つCassandraテーブルが本当に巨大なためです。また、ユーザーがこのクエリサーバーを設定することを忘れるたびにクラッシュする可能性があるため、BI側でカスタム初期クエリを使用することはできません。私が見 最善のアプローチは、自動的にそれが現在のユースケースのために大丈夫だろう

SELECT * FROM (... BI select ...) LIMIT 1000000 

のいくつかの種類にBIからすべてのクエリをラップです。 サーバー側で可能ですか?私はそれをどのようにすることができますか? そうでない場合、Spark Thrift Serverがクラッシュするのを防ぐ方法はありますか? OOMを取得する前に膨大なクエリを削除またはキャンセルする可能性はありますか?おかげさまで

答えて

0

[OK]を、私は私の問題を解決魔法の設定オプションを見つける:このオプションが設定されている場合

spark.sql.thriftServer.incrementalCollect =真

、スパークは、ボリュームによって取得されたデータを分割します - チャンクへのクエリの使用