問題タブ [snappy]
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-kafka - 圧縮された (snappy) メッセージを kafka に送信するときの UnsatisfiedLinkError
私の Java Web アプリでは、メッセージをkafkaに送信しています。
メッセージを送信する前に圧縮したいので、プロデューサーのプロパティを設定しています。
props.put("compression.codec", "2");
私が理解しているように、「2」はスナッピーの略ですが、メッセージを送信すると次のようになります。
それを解決するために、pom に snappy 依存関係を追加しようとしました:
/lib/extの下のJettyサーバーにjarを追加しますが、それでもこのエラーが発生します。
「compression.codec」プロパティに「2」ではなく「0」を設定すると、予期したとおり例外が発生しません。
snappy 圧縮を使用できるようにするにはどうすればよいですか?
これは私のすてきなバージョンです (別のものを使用する必要がありますか?): 1.1.0.1
Ubuntu 12.10 で動作する jetty 8.1.9 にアプリをデプロイしています。
c++ - 非整列メモリアクセスと memcpy の reinterpret_cast の有効な使用例は?
snappy の内部には、reinterpret_cast されたポインターの逆参照を選択する条件付きでコンパイルされたセクションがあります。これは、そのような操作をサポートすることが知られているアーキテクチャ上で、アライメントされていない可能性のある 16、32、および 64 ビット整数の読み取りと書き込みの最適な実装として選択します ( x86)。他のアーキテクチャのフォールバックは、memcpy ベースの実装を使用することです。
私の理解では、 reinterpret_cast 実装は未定義の動作を示し、clang の未定義動作サニタイザーはそれにフラグを立てます。
私を困惑させているのは、memcpyベースの実装を使用しないのはなぜですか? サイズはコンパイル時にわかっているため、最も壊れたコンパイラを除くすべてのコンパイラが組み込み関数を使用してこれらの memcpy 呼び出しを実装することを期待しています。実際、最新のツールチェーンの両方の実装から同一のコード生成が期待されます。
ただし、snappy は、その内容を熟知している人々によって書かれたものであることも認識しています。したがって、未定義の動作であることを上回る reinterpret_cast メカニズムを使用する利点がまだあるかどうか疑問に思います。パフォーマンスをコンパイラの実装品質に依存させたくないですか? 私が考慮していない他の何か?
java - Hadoop mapreduce: java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z
map-reduce ジョブから、snappy ブロック圧縮シーケンス ファイルを書き込もうとしています。Hadoop 2.0.0-cdh4.5.0 と snappy-java 1.0.4.1 を使用しています。
これが私のコードです:
実行すると、次のようになります。
これらの行をコメントアウトすると、テストに合格します。
ただし、シーケンス ファイルでスナッピー圧縮を使用したいのです。誰かが私が間違っていることを説明してもらえますか?