を刺激するために、以下のように私はPythonのパンダのデータフレーム(pd_df)を有する:私はデータフレーム(sp_df)を点火するために変換するパンダデータフレーム(DatetimeIndex列)データフレーム(日時フォーマット)
time count
0 2015-01-31 835
1 2015-02-28 1693
2 2015-03-31 2439
を。
私は最初の列がBIGINT形式で返された
sp_df = sqlContext.createDataFrame(pd_df).
を試してみました:私は、次のコマンドを使用しています。
time count
1422662400000000000 835
1425081600000000000 1693
次のように私はまた、スキーマを試してみましたが、それはどちらか動作しませんでした:
from pyspark.sql.types import *
schema = StructType([
StructField("time", StringType(), True),
StructField("count", IntegerType(), True)])
sp_df = sqlContext.createDataFrame(pd_df, schema)
それは私にエラーを与えた:
DateType can not accept object 1422662400000000000L in type <type 'long'>
誰も私に正しい方法を提案することができますそれ?
あなたのためにこれが起こっている理由は、 pandas dataframeカラムのデータ型はDatetimeIndexです。[documentation](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DatetimeIndex.html)を読んだら、日付がint64として内部的に表現されています。あなたの日付の文字列を作ってから、 'DateType'のデータ型を使ってsp_dfに変換してみてください。 –
' 'StructField'オブジェクトで、' 'time"、StringType()、True'を渡す理由は? 'DateType()'を使わないのはなぜですか? –
ありがとう@KatyaHandler .. datetimeを文字列に変換するというアイデアが助けになりました。以前のStructFieldオブジェクトでは、DateType()として「time」を渡しているときにエラーが発生しました。 今、pandasのdatetimeをstringに変換してから、StructField()のDateType()を使用して変換した後で動作しました。 – aditya