私はデータのクエリを作成し、その上にビジュアライゼーションを作成しています。現在、私のパイプライン全体が機能していますが、クエリの結果を返すのに10分以上かかることがあります。この遅い速度を引き起こすいくつかの最適化や重要なステップが欠けていると私は確信しています。スパークスローパフォーマンス
詳細: 私は3500 csvで500gbを持っています。私はこれらをAzure Blobストレージアカウントに保存し、Azure HDInsightsでスパーククラスタを実行します。私はスパーク2.1を使用しています。
csv_df = spark.read.csv('wasb://[email protected]/folder/*.csv', header=True, inferSchema=True) //Read CSV
csv_df.write.parquet('wasb://[email protected]/folder/parquet_folder/csvdfdata.parquet’) //Write Parquet
parquet_df = spark.read.csv('wasb://[email protected]/folder/parquet_folder/csvdfdata.parquet) //Read Parquet
parquet_df.createOrReplaceTempView(‘temp_table’) //Create a temporary table
spark.sql("create table permenant_table as select * from temp_table"); //Create a permanent table
私は、データをプルするODBCドライバと、このコードを使用します。ここでは
私はデータを摂取するために使用するスクリプト(アズールJupyterノートブック上のPySpark3)があります。私はODBCが少し物事を遅らせることができると理解していますが、私は10分が予想以上のものだと信じています。 https://github.com/Azure-Samples/hdinsight-dotnet-odbc-spark-sql/blob/master/Program.cs データを取得するために私のコードは次のようになり、^
問題は、パイプラインの作品ということですが、それが他に使用されることはすることがあまりにも遅いです。私が作成した視覚化は、最高で数秒でデータを引き出す必要があります。
その他の詳細は:クエリの良い量がint format = 20170629
(2017年6月29日) サンプルクエリで日付を持っているDateIDを使用 = select DateId, count(PageId) as total from permanent_table where (DateId >= 20170623) and (DateId <= 20170629) group by DateId order by DateId asc
任意の助けいただければ幸いです!前もって感謝します! ありがとうございました!
こんにちはMaxiluk、ヒントのためのヒント。私はdateIdによって分割し、それは私にスピードを大幅に向上させます!私は今、約2分に500GBのために。理想的には、私は数秒間プッシュしたい。速度を上げるために必要なその他の最適化はどれですか? また、私の最終的なデータサイズは12TBに近く、現在は500GBをテスト用に使用しています。私はどのクラスター設定をお勧めしますか?私は現在、D12 v2のヘッドノード(2ノード8コア)とD4 v2の4ノード(4ノード、32コア)を使用しています。どのような設定を使用する必要がありますか? –
こんにちは、応答の遅れてごめんね。あなたが行うことができる多くの最適化があります。私はスパークのパフォーマンス最適化シリーズのビデオで最も重要なものをここに書いています:https://channel9.msdn.com/Shows/Data-Exposed/Spark-Performance-Series-1-with-Maxim-Lukiyanov – maxiluk
12TBのクラスターサイズについてD14_v2ワーカーノード10〜40を使用します。より多くの番号であなたはより速いスピードを得るでしょう。 – maxiluk