問題タブ [apache-spark-sql]
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.
sql - Impala の OVERLAPS 関数
ORACLEまたはNetezzaのように、2つの日付範囲を取り、それらが互いに重複しているかどうかを確認する関数を使用しようとしています。このようなもの:
SELECT (TIMESTAMP '2011-01-28 00:00:00', TIMESTAMP '2011-02-01 23:59:59') OVERLAPS (TIMESTAMP '2011-02-01 00:00:00', TIMESTAMP '2011-02-01 23:59:59');
Impala または SparkSQL でこれを行う最善の方法は何ですか? 残念ながら、OVERLAPS は Impala や SparSQL には存在しません。私が考えることができる唯一のものはUDFですが、回避策を探しています。前もって感謝します!
hadoop - Spark SQL が多数のシャードを含む Parquet データの書き込みを完了できない
Apache Spark SQL を使用して、S3 の json ログ データを S3 上の Parquet ファイルに etl しようとしています。私のコードは基本的に次のとおりです。
このコードは、最大 2000 個のパーティションがある場合に機能し、データの量に関係なく、5000 個以上で失敗します。通常はパーティションを合体させて許容できる数にすることができますが、これは非常に大きなデータセットであり、2000 個のパーティションでこの質問で説明されている問題に遭遇しました
これを、ec2 の R3.xlarge の spark-1.1.0 で実行しています。上記のコードを実行するために、spark-shell コンソールを使用しています。その後、SchemaRDD オブジェクトに対して重要なクエリを実行できるようにdata
なったため、リソースの問題ではないようです。結果の Parquet ファイルを読み取ってクエリを実行することもできますが、サマリー ファイルがないため非常に時間がかかります。
amazon-s3 - S3 で >>25T SchemaRDD を Parquet 形式で保存する
非常に大きな SchemaRDD を S3 の Parquet 形式で保存しようとすると、多くの問題が発生しました。これらの問題については、すでに具体的な質問を投稿しましたが、これが本当に必要なことです。コードは次のようになります
約 2000 を超えるパーティションがある場合、または 5G を超えるパーティションがある場合、問題が発生します。これにより、この方法で処理できる SchemaRDD の最大サイズに上限が設定されます。パーティションのサイズは大きく異なり、プロセスが失敗するために必要な 5G パーティションは 1 つだけであるため、実際の制限は 1T に近くなります。
私が遭遇した特定の問題を扱う質問は、
- Apache Spark から Amazon S3 へのマルチパートアップロード
- 再分割された SchemaRDD を Spark SQL で Parquet に書き込む際のエラー
- Spark SQL が多数のシャードを含む Parquet データの書き込みを完了できない
この質問は、上記の問題のいずれかを直接解決することを必ずしも必要としない、主な目標に対する解決策があるかどうかを確認することです。
物事を蒸留するには2つの問題があります
5G を超える単一のシャードを S3 に書き込むと失敗します。
s3n://
私の知る限り、これはバケットの組み込み制限です。バケットでは可能ですs3://
が、Spark からは機能しないようでhadoop distcp
、ローカル HDFS からも機能しません。数千のシャードがあると、サマリー ファイルの書き込みが失敗する傾向があります。これには複数の問題があるようです。S3 に直接書き込むと、上記のリンクされた質問でエラーが発生します。ローカル HDFS に直接書き込むと、r3.8xlarge (244G RAM) でさえ、約 5000 個のシャードがある場合に OOM エラーが発生します。これは、実際のデータ量とは無関係のようです。サマリー ファイルは、効率的なクエリに不可欠なようです。
これらの問題をまとめると、S3 の Parquet テーブルは 25T に制限されます。実際には、RDD 内でシャードのサイズが大きく異なる可能性があり、5G 制限が最大のシャードに適用されるため、実際には大幅に少なくなります。
>>25T RDD を Parquet として S3 に書き込むにはどうすればよいですか?
Spark-1.1.0 を使用しています。
sql - Spark SQL クエリでの文字列連結
私は Spark と Spark SQL を試しており、次のように (結合を使用して) 選択からの出力として取得する文字列フィールドの先頭に値を連結する必要があります。
私のテーブルに含まれているとしましょう:
シム:
イベント:
そして、私は出力として欲しい:
SQL または HiveQL でconcat
関数を使用できることはわかっていますが、Spark SQL はこの機能をサポートしていないようです。誰かが私の問題の回避策を提案できますか?
ありがとうございました。
注:言語統合クエリを使用していますが、最終的な解決策の場合には、「標準の」Spark SQL クエリのみを使用できます。
apache-spark - Apache Spark でデータを集計する方法
3 つのノードに分散システムがあり、データはそれらのノード間で分散されています。たとえば、test.csv
3 つのノードすべてに存在するファイルがあり、4 つの列が含まれています。
上記の結果セットを集計してみたいと思います。id
、c1
、c2
、およびc3
列ごとにデータセットを集計して、このように出力するにはどうすればよいですか?
私は次のことを試しました: