如何使用pyspark数据框将数据存储到时间戳为TIMESTAMP_NTZ的雪花中

时间:2020-07-08 10:09:44

标签: apache-spark pyspark snowflake-cloud-data-platform snowflake-schema

您好,我正在使用以下代码将数据从Spark(pyspark)数据帧加载到雪花表中,但出现类似无法识别时间戳'2020-06-15T12:00:20.040Z'的错误。 请在下面找到相同的代码

sfOptionsRaw1 = { “ sfURL”:“测试”, “ sfUser”:“测试”, “ sfPassword”:“测试”, “ sfDatabase”:“ test”, “ sfSchema”:“测试”, “ sfWarehouse”:“测试”,
“ sfrole”:“测试”, “ TIMESTAMP_TYPE_MAPPING”:“ TIMESTAMP_NTZ”, “ TIMESTAMP_NTZ_OUTPUT_FORMAT”:“ YYYY-MM-DD HH24:MI:SS.FF3” }

test1.write.format(SNOWFLAKE_SOURCE_NAME).option(“ dbtable”,“ test”)。option(“ columnmap”,“ Map(type-> type_test1)”)。options(** sfOptionsRaw1).mode(“ append“)。save()

在cpde上执行后,出现以下错误

Py4JJavaError:调用o2088.save时发生错误。 :net.snowflake.client.jdbc.SnowflakeSQLException:无法识别时间戳'2020-06-15T12:00:20.040Z' 文件“ NVefrmAwkn.csv”,第1行,字符63 第1行,列“ _TEST1” [“ TIME_TEST1”:4] 如果您希望在遇到错误时继续加载,请为ON_ERROR选项使用其他值,例如'SKIP_FILE'或'CONTINUE'。有关加载选项的更多信息,请在SQL客户端中运行“ info loading_data”。 在net.snowflake.client.jdbc.SnowflakeUtil.checkErrorAndThrowException(SnowflakeUtil.java:102) 在net.snowflake.client.core.StmtUtil.execute(StmtUtil.java:410) 在net.snowflake.client.core.SFStatement.executeHelper(SFStatement.java:371) 在net.snowflake.client.core.SFStatement.executeQueryInternal(SFStatement.java:195) 在net.snowflake.client.core.SFStatement.executeQuery(SFStatement.java:147) 在net.snowflake.client.core.SFStatement.execute(SFStatement.java:529) 在net.snowflake.client.jdbc.SnowflakeStatementV1.executeInternal(SnowflakeStatementV1.java:204) 在net.snowflake.client.jdbc.SnowflakeStatementV1.execute(SnowflakeStatementV1.java:239) 在net.snowflake.spark.snowflake.JDBCWrapper $$ anonfun $ executeInterruptible $ 1.apply(SnowflakeJDBCWrapper.scala:261) 在net.snowflake.spark.snowflake.JDBCWrapper $$ anonfun $ executeInterruptible $ 1.apply(SnowflakeJDBCWrapper.scala:261) 在net.snowflake.spark.snowflake.JDBCWrapper $$ anonfun $ 3.apply(SnowflakeJDBCWrapper.scala:283) 在scala.concurrent.impl.Future $ PromiseCompletingRunnable.liftedTree1 $ 1(Future.scala:24) 在scala.concurrent.impl.Future $ PromiseCompletingRunnable.run(Future.scala:24) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748)

1 个答案:

答案 0 :(得分:0)

您可以尝试将timestamp参数更改为此吗?

"TIMESTAMP_NTZ_OUTPUT_FORMAT" : "YYYY-MM-DDTHH24:MI:SS.FF3Z"

此格式与您在帖子中显示的格式匹配,因此可以解决您的问题。