次のように1行のデータフレームをアセンブルすると、私のメソッドは正常にデータフレームを返します。それがエラーをスロー以下のように、私は「end_datetime」または「finish_datetime」を「terminate_datetime」に変更した場合Apache Spark 2.0.0 PySparkマニュアルデータフレーム作成ヘッドスクラッチャー
def build_job_finish_data_frame(sql_context, job_load_id, is_success):
job_complete_record_schema = StructType(
[
StructField("job_load_id", IntegerType(), False),
StructField("terminate_datetime", TimestampType(), False),
StructField("was_success", BooleanType(), False)
]
)
data = [
Row(
job_load_id=job_load_id,
terminate_datetime=datetime.now(),
was_success=is_success
)
]
return sql_context.createDataFrame(data, job_complete_record_schema)
。
def build_job_finish_data_frame(sql_context, job_load_id, is_success):
job_complete_record_schema = StructType(
[
StructField("job_load_id", IntegerType(), False),
StructField("end_datetime", TimestampType(), False),
StructField("was_success", BooleanType(), False)
]
)
data = [
Row(
job_load_id=job_load_id,
end_datetime=datetime.now(),
was_success=is_success
)
]
return sql_context.createDataFrame(data, job_complete_record_schema)
私は受信エラーは、私が "start_datetime" に "terminate_datetime" を変更することができますし、他の言葉で実験している
TypeError: IntegerType can not accept object datetime.datetime(2016, 10, 5, 11, 19, 31, 915745) in type <class 'datetime.datetime'>
です。
手動のデータフレームを構築する以上のことは何もしていないので、このコードを破るフィールド名の変更の理由はわかりません。
これは、私がフィールド名を制御できないデータウェアハウスをロードするためにデータフレームを使用しているので心配です。
名は、物事を変えるなぜ私はFedoraの20