問題タブ [apache-spark-1.6]
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.
apache-spark - EMR で Spark を使用して S3 Parquet ファイルを Hive メタストアに登録する方法
Amazon Elastic Map Reduce 4.7.1、Hadoop 2.7.2、Hive 1.0.0、および Spark 1.6.1 を使用しています。
ユースケース: データの処理に使用する Spark クラスターがあります。そのデータは S3 に Parquet ファイルとして保存されます。ツールが、Hive メタストアに登録されている名前を使用してデータをクエリできるようにしたい (たとえば、作業スタイルでfoo
はなく、テーブルを検索parquet.`s3://bucket/key/prefix/foo/parquet`
する)。また、EMR クラスターを破棄して、同じメタストアに接続された新しいクラスターをスピンアップしても、Hive メタストア (別の RDS インスタンス) の存続期間中、このデータを保持したいと考えています。
問題: そのようなsqlContext.saveAsTable("foo")
ことをすると、デフォルトで、Hive メタストアにマネージド テーブルが作成されます ( https://spark.apache.org/docs/latest/sql-programming-guide.htmlを参照)。これらのマネージド テーブルは、データを S3 から EMR クラスターの HDFS にコピーします。つまり、EMR クラスターを破棄した後、メタデータは役に立たなくなります。
scala - 列値の dataFram の行数に基づいて動的パーティションを実行する方法
に基づいて入力ファイルを分割しようとしていますがaccountId
、この分割は、dataFrames に 1000 を超えるレコードが含まれている場合にのみ行われます。はaccountId
不明ではない動的な整数です。以下のコードを検討してください
しかし、上記のコードは必要のないすべての accountId を分割します。
- データフレーム内のそれぞれの数を見つけたいです
accountId
。 - 各 accountId のレコードが 1000 を超える場合は、分割された情報を出力ソースに書き込みます。
たとえば、入力ファイルに accountId=1 の 1500 レコードと accountId=2 の 10 レコードがある場合、accountId=1 に基づいてフィルター処理されたデータフレームを出力ソースに分割し、accountId=2 レコードをメモリに保持します。
スパークストリーミングを使用してこれを達成する方法は?
apache-spark - Spark CrossValidatorModel は bestModel 以外のモデルにアクセスしますか?
私はSpark 1.6.1を使用しています:
現在、CrossValidator を使用して、ML パイプラインをさまざまなパラメーターでトレーニングしています。トレーニング プロセスの後、CrossValidatorModel の bestModel プロパティを使用して、クロス検証中に最高のパフォーマンスを発揮したモデルを取得できます。交差検証の他のモデルは自動的に破棄されますか、それとも bestModel よりパフォーマンスの悪いモデルを選択できますか?
クロスバリデーションに F1 Score メトリクスを使用しているので質問していますが、クロスバリデーション中に最高のパフォーマンスを発揮したモデルだけでなく、すべてのモデルの weightedRecall にも関心があります。
java - Apache Spark は、複数の列で大きなデータセットを自己結合します
糸を使用して、Hadoop クラスターで Apache Spark を実行しています。1 億 6000 万レコードのような大きなデータ セットがあります。自己結合を実行する必要があります。結合は、1 つの列 (c1) の完全一致、日付の重複一致、およびさらに 2 つの列のうちの少なくとも 1 つの一致 (c3 または c4 としましょう) で行われます。
RDD で HBase からデータを読み取り、その RDD を DATASET に変換してから、結合を行いました。だから私の質問は:
1)すべてをシャッフルするのではなく、sparkがパーティションにのみ参加するように、結合を行う前にc1でrddをパーティション分割すると役立ちますか(これは常に一致する必要があります)?
2) また、キーを使用してこれを行いました (例: c1+c3 および c1+c4)。次に、キーによる結合を行いますが、日付の重複によってすべての結果をフィルター処理する必要があります。日付の重複を追加すると思いました結合により、生成されるレコードが少なくなります。
3)正確な列の値に一致する自己結合を行う効率的な方法はありますが、他の列との比較も行いますか?
scala - Spark データセット: groupBy MissingRequirementError 使用時の例外
Spark データセットの使用を開始しています。Spark 1.6.1 で groupby を実行すると、この例外に直面しています。
これは例外です
scala.reflect.internal.MissingRequirementError: オブジェクト $line19.$read が見つかりません。scala.reflect.internal.Mirrors$RootsBase.ensureModuleSymbol(Mirrors) で scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16) .scala:126) で scala.reflect.internal.Mirrors$RootsBase.staticModule(Mirrors.scala:161) で scala.reflect.internal.Mirrors$RootsBase.staticModule(Mirrors.scala:21) で $iwC$$iwC$ $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$typecreator2$1.apply(:32) at scala.reflect.api.TypeTags$WeakTypeTagImpl.tpe$lzycompute(TypeTags.scala:231) at scala .reflect.api.TypeTags$WeakTypeTagImpl.tpe(TypeTags.scala:231) org.apache.spark.sql.SQLImplicits$$typecreator10$1.apply(SQLImplicits.scala:
誰でも助けることができますか?
java - アプリケーションで SQLContext を使用して Hive テーブルに対して SQL を実行すると失敗するのはなぜですか?
Spark 1.6を使用しています。
次の方法で、spark-sql Java コードのテーブルに接続しようとしています。
テーブルが見つからないという例外が発生します。
しかし、scala を使用して spark-shell でそれを行うと、正常に動作します。テーブルにアクセスし、データを出力することもできます。
この問題に関する意見はありますか?
apache-spark - Apache Spark: エグゼキュータ インスタンスの設定
パラメータを使用して YARN で Spark アプリケーションを実行します。
spark-defaults.conf で:
yarn-site.xml で:
他のすべてのパラメータはデフォルトに設定されています。
6 ノードのクラスターがあり、Spark クライアント コンポーネントが各ノードにインストールされています。アプリケーションを実行するたびに、Spark UI に表示されるのは 2 つのエグゼキューターと 1 つのドライバーだけです。Executor はさまざまなノードに表示されます。
Spark がこれ以上エグゼキュータを作成できないのはなぜですか? なぜ6ではなく2しかないのですか?
非常によく似た質問を見つけました: Apache Spark: executor instances を設定しても executors は変更されませんが、 memoty-mb パラメータを増やしても私の場合は役に立ちませんでした。