Spark PythonからPandasにタイムスタンプデータを往復変換する方法はありますか?私はSparkのHiveテーブルからデータを読み込み、Pandasでいくつかの計算を行い、結果をHiveに書き戻したいと思います。最後の部分だけが失敗し、PandasタイムスタンプをSpark DataFrameタイムスタンプに変換し直します。Spark PythonからPandasへのタイムスタンプ往復
import datetime
import pandas as pd
dates = [
('today', '2017-03-03 11:30:00')
, ('tomorrow', '2017-03-04 08:00:00')
, ('next Thursday', '2017-03-09 20:00:00')
]
string_date_rdd = sc.parallelize(dates)
timestamp_date_rdd = string_date_rdd.map(lambda t: (t[0], datetime.datetime.strptime(t[1], "%Y-%m-%d %H:%M:%S')))
timestamp_df = sqlContext.createDataFrame(timestamp_date_rdd, ['Day', 'Date'])
timestamp_pandas_df = timestamp_df.toPandas()
roundtrip_df = sqlContext.createDataFrame(timestamp_pandas_df)
roundtrip_df.printSchema()
roundtrip_df.show()
root
|-- Day: string (nullable = true)
|-- Date: long (nullable = true)
+-------------+-------------------+
| Day| Date|
+-------------+-------------------+
| today|1488540600000000000|
| tomorrow|1488614400000000000|
|next Thursday|1489089600000000000|
+-------------+-------------------+
この時点で、往復のSpark DataFrameには、日付型の列がデータ型longとしてあります。 Pysparkでは、これはdatetime.datetime.fromtimestamp(148908960000000000/1000000000)のようにdatetimeオブジェクトに簡単に変換できますが、時刻は数時間ずれています。 Spark DataFrameのデータ型を変換するにはどうすればよいですか? Pythonの3.4.5
、1.6.0
おかげスパーク、Pythonの日時にdatetime64列を変換 ジョン
私はこのroundtrip_df.Date列のデータ型を 'timestamp'ではなく 'struct'として返しました。 –
あなたはどのバージョンのパンダを使用していますか? – innohead
0.19.1、pd .__ version__ –