2017-12-18 8 views

答えて

1

現在のcurrent_timestampはハイブで機能し、ナノ秒単位で時間を与えません。

しかし、create your own functionsでは、ナノ秒のタイムスタンプを処理するためにハイブUDFを使用することができます。

以下は、ナノ時間のlongの値を返すUDFの例です。

import org.apache.hadoop.hive.ql.exec.UDF; 
import org.apache.hadoop.hive.ql.udf.UDFType; 

@UDFType(stateful = true) 
public class NanoTimeUdf extends UDF{ 

    public long evaluate() { 
     return System.nanoTime(); 
    } 

} 

上記のJavaコードのうち、ジャーを作成します(tonanotime.jarを言う)と、現在のナノ時間を返すために、UDF関数を作成するためにjarファイルを追加します。今

ADD JAR /home/amit/tonanotime.jar; 
create TEMPORARY FUNCTION toNanoTime AS 'NanoTimeUdf'; 

toNanoTime機能が利用可能です、あなたは次のように新しいテーブルに挿入するために、選択クエリに使用することができます。 例えば

insert into table select toNanoTime() from other_table; 
関連する問題