問題タブ [timeuuid]
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 - cassandra タイムスタンプ列を timeuuid としてキャストする
からイベントを取得しKafka
て保存してCassandra
います。次のようなテーブルの列を作成するためのjson
フィールドを含む解析:eventID, sessionID, timestamp, userID
Cassandra
そしてコードで:
timestamp
として列を追加する必要がありますtimeuuid
。から解析しているのでjson
、ヘッダーからすべての値を抽出し、この方法で列を作成しました。
この部分:
エラーが発生しています
java.lang.NumberFormatException: 入力文字列の場合: "2019-05-09T09:00:52.553+0000" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
試してみました:
java.util.UUID.fromString(x._1("timestamp").toString
、同じエラーも生成します。適切にキャスト/変換timestamp
し、 spark ジョブ経由timeuuid
で挿入する方法Cassandra
scylla - scyllaから選択するときに単調に増加するtimeuuidを保証する方法
クラスタリング キーとして timeuuid を持つテーブルがあります。
次の保証を使用して、このクラスタリング キーの順序でデータを選択したいと考えています。何かを選択した場合、将来、それらのレコードの前に挿入が行われることはありません (したがって、レコードをスキップするリスクなしに、何が起こったのかを確認することを繰り返すことができます)。イベント)
SELECT kind FROM event WHERE domain = ? AND createdAt > lastCreatedAtWeAreAwareOf
クライアントでtimeuuidを生成し、scyllaに並列挿入を使用すると、技術的には、最近のtimeuuidがいくつかの古いものよりも前に挿入される可能性があり(ネットワークの問題などにより)、選択したレコードを見逃す可能性があります。
これを解決するにはどのような方法がありますか?
関数を使用してみましたが、機能しているように見えますが (同じパーティション キー内で単調に増加)、多くの重複(currentTimeUUID
同じパーティション キーごとに 20 ~ 40 の重複) が作成されます。currentTimeUUID
重複を避ける方法が本当に必要です。選択プロセスが複雑になり、不要なリソースが消費されます)
currentTimeUUID
また、関数を使用するときに逆方向のクロックジャンプの脅威があるかどうかも興味がありますか?