問題: 以下を使用して S3 から Spark EMR にデータをインポートしたい:
data = sqlContext.read.json("s3n://.....")
Spark がデータの読み込みと処理に使用するノードの数を設定する方法はありますか? これは、データを処理する方法の例です。
data.registerTempTable("table")
SqlData = sqlContext.sql("SELECT * FROM table")
コンテキスト: データが大きすぎず、Spark への読み込みとクエリに時間がかかります。Spark はデータをあまりにも多くのノードに分割していると思います。手動で設定できるようにしたいです。RDD を扱うときは知っておりsc.parallelize
、パーティションの数を入力として渡すことができます。また、私は見repartition()
ましたが、私の問題を解決できるかどうかはわかりません. 変数data
はDataFrame
私の例では a です。
パーティションをより正確に定義しましょう。定義 1: 一般に「パーティション キー」と呼ばれ、列が選択され、クエリを高速化するためにインデックスが作成されます (これは私が望んでいるものではありません)。定義 2: (これが私の懸念事項です) データ セットがあるとします。Spark は、データ セットを多数のノードに分散させて、データに対して操作を並行して実行できるようにします。データ サイズが小さすぎると、処理がさらに遅くなる可能性があります。その値を設定するにはどうすればよいですか