2017-02-14 21 views
9

मैं मिलीसेकंड (13 अंकों) में टाइमस्टैम्प फ़ील्ड से यूनिक्स समय प्राप्त करने का प्रयास कर रहा हूं लेकिन वर्तमान में यह सेकंड (10 अंक) में आता है।क्या अपिक्स_टिमस्टैम्प() अपाचे स्पार्क में मिलीसेकंड में यूनिक्स समय लौटा सकता है?

scala> var df = Seq("2017-01-18 11:00:00.000", "2017-01-18 11:00:00.123", "2017-01-18 11:00:00.882", "2017-01-18 11:00:02.432").toDF() 
df: org.apache.spark.sql.DataFrame = [value: string] 

scala> df = df.selectExpr("value timeString", "cast(value as timestamp) time") 
df: org.apache.spark.sql.DataFrame = [timeString: string, time: timestamp] 


scala> df = df.withColumn("unix_time", unix_timestamp(df("time"))) 
df: org.apache.spark.sql.DataFrame = [timeString: string, time: timestamp ... 1 more field] 

scala> df.take(4) 
res63: Array[org.apache.spark.sql.Row] = Array(
[2017-01-18 11:00:00.000,2017-01-18 11:00:00.0,1484758800], 
[2017-01-18 11:00:00.123,2017-01-18 11:00:00.123,1484758800], 
[2017-01-18 11:00:00.882,2017-01-18 11:00:00.882,1484758800], 
[2017-01-18 11:00:02.432,2017-01-18 11:00:02.432,1484758802]) 

हालांकि 2017-01-18 11:00:00.123 और 2017-01-18 11:00:00.000 अलग हैं, मैं एक ही यूनिक्स समय पहले 1484758800

मैं क्या याद आ रही है मिल सकता है?

उत्तर

1

unix_timestamp() सेकंड में यूनिक्स टाइमस्टैम्प लौटाएं।

टाइमस्टैम्प में अंतिम 3 अंक मिलीसेकंड स्ट्रिंग (1.999sec = 1999 milliseconds) के अंतिम 3 अंकों के साथ समान हैं, इसलिए बस टाइमस्टैम्प स्ट्रिंग के अंतिम 3 अंक लें और मिलीसेकंड स्ट्रिंग के अंत में संलग्न करें।

संबंधित मुद्दे