是否有人在Spark 2+中使用from_json
解析了毫秒時間戳?它是如何完成的?用Spark 2解析json的時代毫秒
因此Spark changedTimestampType
解析時代數值爲秒,而不是v2毫秒。
我輸入的是,有一列其中我試圖解析這樣的JSON格式的字符串蜂巢表:
val spark = SparkSession
.builder
.appName("Problematic Timestamps")
.enableHiveSupport()
.getOrCreate()
import spark.implicits._
val schema = StructType(
StructField("categoryId", LongType) ::
StructField("cleared", BooleanType) ::
StructField("dataVersion", LongType) ::
StructField("details", DataTypes.createArrayType(StringType)) ::
…
StructField("timestamp", TimestampType) ::
StructField("version", StringType) :: Nil
)
val item_parsed =
spark.sql("select * FROM source.jsonStrInOrc")
.select('itemid, 'locale,
from_json('internalitem, schema)
as 'internalitem,
'version, 'createdat, 'modifiedat)
val item_flattened = item_parsed
.select('itemid, 'locale,
$"internalitem.*",
'version as'outer_version, 'createdat, 'modifiedat)
這可以解析一行包含列:
{ 「時間戳」:1494790299549, 「清」:假, 「版本」: 「V1」, 「dataVersion」:2 「的categoryId」:2641, 「細節」:[],...}
這給了我timestamp
個領域,如49338-01-08 00:39:09.0
從價值1494790299549
,我寧願理解爲:2017-05-14 19:31:39.549
現在我可以設置時間戳的模式是一個長期的,然後通過1000和投劃分值的時間戳,但後來我d有2017-05-14 19:31:39.000
而不是2017-05-14 19:31:39.549
。我無法找出如何我既可以:
- 告訴
from_json
解析一個毫秒時間戳(可能以某種方式在架構中使用的子類TimestampType) - 使用
LongType
在架構並將其轉換爲保留毫秒的時間戳。
噢,所以這不是將其劃分成另一個長整數?大! – dlamblin