0
日付:移入Elasticsearchは、私のようなスキームでスパークでのデータフレームを持っているApacheのスパーク
id: string
style: string
creationdate: string
私の日付が "YYYY-MM-DD HH:MM:SS.SSS" などの日時文字列です。私が使用して、日付を文字列から「のCreationDate」を変換しています:
val df2 = df.withColumn("creationdate2", $"creationdate".cast(DateType))
.drop($"creationdate")
.withColumnRenamed("creationdate2", "creationdate")
にこれは、結果:
"creationdate": {
"type": "date",
"format": "yyyy-MM-dd"
}
:私のように定義された日付マッピングとElasticsearchインデックスを投入しようとしています
id: string
style: string
creationdate: date
String to DateTime変換は、印刷時にこの形式と一致するように見えます。私は、インデックスを移入するために行くときしかし、:
df2.saveToEs("myindex")
私はエラーを取得する:
org.apache.spark.util.TaskCompletionListenerException: Found unrecoverable error [169.10.29.240:9200] returned Bad Request(400) - failed to parse [creationdate]; Bailing out..
at org.apache.spark.TaskContextImpl.markTaskCompleted(TaskContextImpl.scala:105)
at org.apache.spark.scheduler.Task.run(Task.scala:112)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
According to the guide日はそれがDATETYPEに変換されているので、構文解析することができるはずです。何か案は?スキーマはdateの代わりにDateTypeを表示する必要がありますか?変換を間違っているのですか?
df2.show()を実行するとどうなりますか?そして、あなたは日付にキャストせずにToTo()を保存できますか? –
@PaulBackすべてがshow()でうまく見えますが、日付は期待通りにyyyy-MM-ddにトリムされます。 saveToEs()はキャストなしで同じエラーをスローします –
そして文字列型を期待するためにES側のインデックスを改訂しましたか? –