0

Phoenix を介して HBase DB を使用しています。エポック タイムスタンプの 2 つの文字列を比較する必要があります。メソッド to_number("ts") は、大量のデータの計算に時間がかかりすぎます。

エポック タイムスタンプの 2 つの文字列を数値やその他の変換に変換せずに比較するためのベスト プラクティスは何ですか。

文字列比較の使用は、456 < 654 など、同じ長さの数に対してはうまく機能します。しかし、456 < 65 など、長さが異なる数に対しては失敗する可能性があります。

すべての文字列が同じ長さになるように、挿入進行中の各数値の前にゼロを植えることを検討しましたが、それを行うためのより良い方法があるはずです.

4

1 に答える 1

1

文字列は辞書式に比較されます。クエリ時に TO_NUMBER() を使用するか、挿入/クエリ時に LPAD() を使用する必要があります。特に Hadoop または HBase (行キーの場合) では、数値文字列の lpadding が一般的な方法です。

とにかく、そのタイムスタンプを +10B 文字列ではなく、4B 整数または 8B long として保存することを検討する必要があります。それらを直接比較することができ、特にそれが行キーの一部である場合は、スペースも節約できます (hbase では、行キーは格納されているすべてのセルに配置されます)。

  • 標準の posix タイムスタンプ (秒単位) の場合は、整数として保存できます。または、2038 年に備えたい場合は、長いhttp://en.wikipedia.org/wiki/Year_2038_problemを使用してください:)
  • ミリ秒単位のタイムスタンプの場合、それらを long として保存する必要があります。
于 2015-01-11T08:15:36.720 に答える