問題タブ [elasticsearch-spark]
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.
scala - Spark Group By と Rank 関数の実行が非常に遅い
時間枠内でアクセスされた上位 n 個の URL を見つけるためのスパーク アプリを作成しています。389451
ただし、このジョブは実行され続け、インスタンスの ES のレコードに数時間かかります。この時間を減らしたい。
私は以下のようにスパークのエラスティック検索から読んでいます
上記の DF では、ElasticSearch から読み取りとフィルタリングを行っています。また、URI からクエリ パラメータを削除しています。
次に、グループ化を行っています
次に、ウィンドウ関数を実行しています
それから私はcassandraにfinalDFを書いています
ES クラスターに 4 つのデータ ノードがあり、Spark マシンは 16 コア 64GB RAM VM です。問題がどこにあるかを見つけるのを手伝ってください。
apache-spark - 誤って検出されたスキーマのキャスト。Pyspark-Elasticsearch
Pyspark を使用して、ElasticSearch インデックスからジオ ポイント データを読み込んでいます。次のコマンドを使用して DataFrame を作成しています。
us_df = spark.read.format('es').option('es.query', us_q).option('es.read.field.as.array.include', 'extra_tags').load('index').select('centroid.lat', 'centroid.lon')
DataFrame のスキーマを印刷すると、スキーマが次のように取得されます
しかし、最初の 10 レコードを取得しようとすると
us_df.take(10)
エラーが発生する
私はトレースを見て、緯度と経度がESから文字列として返されています
{"_index":"places","_type":"us_place","_id":"548776421","_score":null,"_source":{"centroid":{"lon":"-87.739957","lat":"41.871084"}}
s は double として推論され、データの読み取り中にエラーがスローされます。
DataFrame の作成中に、緯度と経度を double ではなく文字列として解釈するように強制するにはどうすればよいですか。
Spark バージョン - 2.1.1 ES-Hadoop jar - elasticsearch-spark-20_2.11-5.2.2.jar ES バージョン - 5.2.2
ありがとう