問題タブ [spark-thriftserver]
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 - HiveThriftServer2 は、Hive 1.2.1 jar とのみ互換性があります
以下を使用して、Spark アプリケーションで HiveThriftServer を開始しています。
それを開始するには、クラスパスに hive-jdbc-1.2.1.spark2、hive-exec-1.2.1.spark2、hive-metastore-1.2.1.spark2 jar を含める必要があることがわかります。
これまでのところ、うまく起動し、Spark UI に「JDBC/ODBC」タブが表示されます。
現在、クライアント側 (データにアクセスするためにこのサーバーに接続する必要がある場所) には、hive-jdbc-2.1.1 などのより高度なバージョンの JARS があります。以下のコードでサーバーに接続しようとすると、私は例外を取得します:
例外: 原因: org.apache.thrift.TApplicationException: 必須フィールド 'client_protocol' が設定されていません! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=default}) at org.apache.thrift.TApplicationException.read(TApplicationException.java:111) at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java: 79) org.apache.hive.service.rpc.thrift.TCLIService$Client.recv_OpenSession(TCLIService.java:168) で org.apache.hive.service.rpc.thrift.TCLIService$Client.OpenSession(TCLIService.java: 155) org.apache.hive.jdbc.HiveConnection.openSession (HiveConnection.java:576) で
サーバーと同じバージョンのJARSを使用すると、動作します。
1.サーバー側のJARSを新しいバージョン(2.1.1)に変更しますが、サーバーは起動しません(実際にはClassNotFoundの問題が発生します)。HiveThriftServer2 クラスは spark-hive-thriftserver jar に由来し、その pom.xml を見ると、 1.2.1 jars の依存関係があり、サーバーが 2.1.1 バージョンで起動しないことが明らかです
- クライアント側でバージョンを変更しますが、アプリケーション サーバー内の他のアプリケーションがそれらのバージョンに依存しているため、JAR バージョンを変更するオプションがありません。
誰でもこれを修正する方法を提案できますか? (理想的には、jas の新しいバージョンには後方互換性があるべきです)
apache-spark - Spark での FAIR スケジューリングによる同時実行性の実現
私の環境: Spark Thrift サーバーを介して Cassandra に接続しようとしています。次に、Cassandra テーブル データを保持する Hive メタストアにメタテーブルを作成します。Web アプリケーションでは、JDBC ドライバーを介してメタテーブルに接続します。Spark Thrift サーバーの公平なスケジューリングを有効にしました。
問題: JMeter を介して 100 人のユーザーに対して 300 秒間の同時実行性の負荷テストを実行すると、最初の要求の応答時間が 1 秒未満になります (最初の 30 秒など)。その後、応答時間が徐々に増加します (2 ~ 3 秒など)。Spark UI を確認すると、すべてのジョブが 100 ミリ秒未満で実行されます。また、リクエストを受け取ったときに、ジョブとタスクが保留段階にあることにも気付きました。したがって、タスクの実行に数秒かかる場合でも、スケジューラーによってレイテンシーで送信されると想定しています。ジョブの送信でこの待ち時間を修正するにはどうすればよいですか?
以下は私の構成の詳細です。ワーカーの数 - 2 ワーカーあたりのエグゼキューターの数 - 1 エグゼキューターあたりのコア数 - 14 ワーカーの合計コア - エグゼキューターあたり 30 メモリ - 20Gb ワーカーの合計メモリ - 106Gb
Fair Schedule XML での構成
Spark Standalone モードで実行しています。
apache-spark - SparkSQL とその実行エンジンを使用して、Hive 実行エンジンの一部を呼び出さずに Hive データベースとテーブルにクエリを実行するにはどうすればよいですか?
Hive CLI および/または beeline CLI および/または Spark (2.3.1) WITH から実行できる select および join ステートメントを作成しましたenableHiveSupport=TRUE
。(注: API に SparkR を使用しています)
beeline を使用した結合と書き込みには 30 分かかりますが、Spark with を使用した結合と書き込みにenableHiveSupport=TRUE
は 3.5 時間かかります。これは、Spark とそのコネクタがくだらないことを意味するか、または私が本来あるべき方法で Spark を使用していないことを意味します...そして、Spark の「スライスされたパン以来の最高のもの」の解説について読んだすべては、おそらくそれを正しく使用していないことを意味します.
Hive テーブルから読み取りたいのですが、Hive に何もしてほしくありません。毎月のデータに対して結合を実行し、各レコードの毎月のデルタで回帰を実行してから、必要に応じて、Hive から読み取り可能な寄木細工の出力テーブルに最終的な勾配/ベータを出力したいと思います...できれば同じ方法でパーティション分割しますHive からの入力データとして使用しているテーブルを分割しました。
リクエストに応じて、コードをいくつか示します...しかし、何も学べないと思います。ビッグ データ クエリでは、再現可能な結果は得られません。
apache-spark - Windows 10 で Spark Thrift サーバーを起動する
を使用してSpark Thrift Serverを起動しようとしています
D:\spark\spark-2.3.2-bin-hadoop2.7\bin>spark-class org.apache.spark.deploy.SparkSubmit --class org.apache.spark.sql.hive.thriftserver.HiveThriftServer2 spark-internal
cmdで。
ただし、以下の行に到達すると、cmd が永久にハングします。誰も理由を知っていますか?アドバイスをありがとう。
INFO ThriftCLIService:98 - ポート 10000 で ThriftBinaryCLIService を 5...500 ワーカー スレッドで開始しています