我正在将Pandas
数据框t
的内容写入Pyspark
中的Hive表。
t
有一列Request_time_local
pandas.tslib.Timestamp
列
In: print t.loc[0,'Request_time_local']
Out: 2016-12-09 13:01:27
Hive表格中有一个request_time_local
类型的列timestamp
:
col_name | data_type
request_time_local | timestamp
我将t
转换为Pyspark dataframe
以便写入Hive:
t_rdd = spark.createDataFrame(t)
t_rdd.registerTempTable("temp_result")
我的表格中未填充request_time_local
列,但其他所有列都已填充。
转换为Pyspark dataframe
后,request_time_local
为bigint
unix时间戳:
spark.createDataFrame(t)
DataFrame[request_time_local: bigint, ...]
我通过将Pyspark dataframe
转换回pandas来检查这一点。
t_check = t_rdd.toPandas()
In: print t_check.loc[0,'Request_time_local']
Out: 1481288487000000000
我想知道:
1)request_time_local
无法填充,因为我正在从Hive表格列中的bigint
到Pyspark dataframe
写timestamp
吗?
2)有没有办法在timestamp
中保留Pyspark dataframe
类型以与Hive表列类型兼容?
(我意识到这里的一个解决方案是将Hive列更改为int
并编写unix时间戳。)
答案 0 :(得分:0)
您可以尝试:
response