使用wsl debian 10上的pyspark 3.1.1
读取用包含字符串的列分区的Parquet地板文件时 NOW
,字符串将替换为 read()
函数被执行。我想是的 NOW
字符串解释为 now()
```
step to reproduce
df = spark.createDataFrame(data=[("NOW",1), ("TEST", 2)], schema = ["col1", "id"])
df.write.partitionBy("col1").parquet("test/test.parquet")
/home/test/test.parquet/col1=NOW
df_loaded = spark.read.option(
"basePath",
"test/test.parquet",
).parquet("test/test.parquet/col1=*")
df_loaded.show(truncate=False)
+---+--------------------------+
|id |col1 |
+---+--------------------------+
|2 |TEST |
|1 |2021-04-18 14:36:46.532273|
+---+--------------------------+
这是一个bug还是pyspark的正常功能?如果是后者,是否存在 `sparkContext` 避免这种行为的选择?
1条答案
按热度按时间7ajki6be1#
我怀疑这是一个预期的功能。。。但我不确定是在哪里记录的。无论如何,如果要将列保留为字符串列,可以在读取Parquet文件时提供架构: