問題タブ [rdd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spark RDD を JSON オブジェクト Java に変換する方法
Cassandra を Spark で使用する場合、回復した RDD は次のようになります。
JSON オブジェクトのように見せるにはどうすればよいですか? 現在、マップされたRDDの一部を手動で置き換えてJSONのように見せていますが、関数、またはSpark RDDをJSONにマップする簡単な方法が必要なので、さまざまなデータRDDを処理できます。
java - Apache Spark で特定のマシンを指定する
私は一般的にSparkとHadoopタイプのものにまったく慣れていないので、これが非常に基本的な質問である場合はご容赦ください. 一連のタスクの最初のタスクを実行するために、いくつかのマシンのクラスターを利用するシステムを設計しようとしています。最初のタスクが生成する RDD で実行されるフォローアップ タスクは、すべて同じマシンで実行する必要があります。これは、プログラムの実行中に常にそのマシンである限り、クラスターの任意のマシンである可能性があります。
それが確実に起こるようにするにはどうすればよいですか?クラスター内の単一のマシンを予約して、常にそのマシンでフォローアップ タスクを実行できますか? もしそうなら、それはJavaでどのように見えますか? そうでない場合、これを達成する他の方法はありますか?
scala - Spark はリソース管理を処理しますか?
私は Apache Spark を初めて使用し、Spark と共に Scala の学習を開始しました。このコード スニペットでは、Spark はプログラムが終了したときにテキスト ファイルを閉じる処理を行いますか?
Java では、ファイルを開いたときに、try-catch-finally または try-with-resources で閉じる必要があることを知っています。
この例では、テキスト ファイルについて言及していますが、RDD は複数の異なる種類のデータ セットを取得できるため、完了時に Spark がリソースのクローズを処理するかどうかを知りたいと考えています。
scala - RDD[(Int,Int)] マップと比較するには?
演習として、自分で Spark を使用してk-meansを実装しています。これを行うにはid -> cluster_id
、各ステップで の 2 つのマップを比較する必要があります。現在、私はそれらの両方を収集し、2 つの単純なスカラ マップとして比較することでそれを行っています。
これを並行して行う方法はありますか?その価値はありますか?
アップデート:
K-MEANSクラスタリングアルゴリズムから始めて、状況を詳しく説明しましょう(簡単です)
- それらを重心にするすべての N ポイントからランダムな K ポイントを選択します。
- 各点を最も近い重心に割り当てます(ユークリッド距離に従って)
- 重心を再計算し、割り当てられた重心ですべてのポイントをグループ化し、それらの平均を計算します
- 再計算によって、前のステップのもの以外のマッピング (obj_id -> centroid_id) が生成された場合は、ステップ 2-3 を繰り返します。
ステップ#4が問題です。前のステップで持っていたマッピングと現在持っているマッピングを比較する必要があります。これは、ワーカー全体でランダムな読み取りをあまり行わずに、何らかの形で並行して行う必要があります。
scala - Spark RDD any() および all() メソッド?
とRDD[T]
述語がありT => Boolean
ます。すべての項目が述語に適合するか適合しないかを計算するにはどうすればよいですか?
もちろん、私はこのようにすることができます:
ただし、これを繰り返すには完全なコレクションが必要です。これはやり過ぎです。
local[1]に適した別のアプローチを試しましたが、実際のクラスターでもすべてを反復しているように見えました。
[必要なものが見つからない場合は例外で失敗します]
これを達成するための標準的な方法は何ですか?
scala - Spark foreach 内でのコード実行
と の 2 つの RDD がpoints
ありpointsWithinEps
ます。の各点は座標をpoints
表します。2 点とそれらの間の距離を表します: . すべてのポイントをループし、すべてのポイントに対して (最初の) 座標にある要素のみをフィルター処理したいと考えています。だから私は次のようにします:x, y
pointsWithinEps
((x, y), distance)
pointsWithinEps
x
しかし、この構文は無効です。私の知る限り、Spark foreach 内で変数を作成することは許可されていません。私はこのようなことをすべきですか?
または、これを行うより良い方法はありますか?完全なコードはここでホストされています: https://github.com/timasjov/spark-learning/blob/master/src/DBSCAN.scala
編集:
現在、次のコードがありますが、NullPointerException (pointsWithinEps) がスローされます。なぜそれを修正することができますかpointsWithinEps
? (foreach に要素が含まれる前に) なぜ null なのですか?