Pandas
データフレームの内容t
をHiveテーブルPyspark
に書き込みます。PysparkデータフレームにPandasタイムスタンプタイプを保存する
t
はタイプpandas.tslib.Timestamp
の1列Request_time_local
があります
In: print t.loc[0,'Request_time_local']
Out: 2016-12-09 13:01:27
ハイブテーブルはタイプtimestamp
の列request_time_local
があります
col_name | data_type
request_time_local | timestamp
私はハイブへの書き込みのためPyspark dataframe
にt
を変換します。
t_rdd = spark.createDataFrame(t)
t_rdd.registerTempTable("temp_result")
request_time_local
の列にはテーブルにデータが入力されていませんが、他のフィールドはすべて入力されています。
spark.createDataFrame(t)
DataFrame[request_time_local: bigint, ...]
Iがパンダに戻っPyspark dataframe
を変換することによってこれを確認:Pyspark dataframe
への変換で
は、request_time_local
はbigint
Unixタイムスタンプです。
t_check = t_rdd.toPandas()
In: print t_check.loc[0,'Request_time_local']
Out: 1481288487000000000
私は思ったんだけど:
1)私はハイブテーブルの列にtimestamp
にPyspark dataframe
からbigint
を書いていますので、投入するために失敗しrequest_time_local
ですか?
2)Pyspark dataframe
のtimestamp
タイプをHiveテーブルの列タイプとの互換性のために保存する方法はありますか?
(。私はここに一つの解決策は、int
にハイブ列を変更し、UNIXタイムスタンプを書くことで実現)
感謝を。これは問題を解決しました。 – lmart999