【发布时间】:2021-07-04 00:06:11
【问题描述】:
我只是在读取一个 parquet 文件并添加一个过滤器来匹配日期内的所有记录 - 这里是 2021-04-03。该列不应该为空,它应该在给定的日期。
输入表
+---------+-----------+-------------------+
| lat| lng| eventDTLocal|
+---------+-----------+-------------------+
|34.269788| -98.239543|2021-04-03 19:18:58|
|29.780977| -95.749744|2021-04-03 19:33:24|
|48.150173|-122.191903|2021-04-03 17:25:00|
|40.652889| -74.185461|2021-04-03 20:27:55|
|41.747148| -87.799557|2021-04-03 19:52:39|
+---------+-----------+-------------------+
我已尝试将列转换为最新,使用 substring_index 函数进行匹配,但我无法在推送的过滤器中获取它。
以下是我尝试过的代码:
df1 = spark.read.parquet("/Users/aadhithyahari/Downloads/awsfiles/part-00000-bfccec4c-7939-4f85-8fa9-5f1cb34f843a.c000.snappy.parquet") \
.select( 'lat', 'lng', 'eventDTLocal').filter("TO_DATE(CAST(UNIX_TIMESTAMP(`eventDTLocal`, 'yyyy-MM-dd HH:mm:ss') AS TIMESTAMP),'yyyy-MM-dd') == CAST('2021-04-03' AS DATE)").explain(extended=True)
过滤器仅在数据过滤器中列出,其他任何地方都没有。我在这里错过了什么?
【问题讨论】:
标签: sql apache-spark pyspark apache-spark-sql parquet