在 Spark 中过滤 Big number 上的数据
Posted
技术标签:
【中文标题】在 Spark 中过滤 Big number 上的数据【英文标题】:filtering data on Big number in Spark 【发布时间】:2020-01-08 13:32:59 【问题描述】:我有一些包含 json 格式的创建时间的记录。在对数据进行实际工作之前,我想过滤掉在 12 月 31 日晚上 11:59:59 (1577836740000) 之后创建的数据。 但是过滤器查询不适用于这么大的数字。任何关于如何过滤的建议。
我现在做的如下。
Dataset<Row> testData = rawDataSet.select(cols)
.filter(col("name").equalTo("dummy string"))
...
...//Some filter
...
.filter(col("creationTime").gt((1577836740000l)))
虚拟输入:
[
"name": "a",
"creationTime": 1577836740000
,
"name": "b",
"creationTime": 1577836720006
,
"name": "c",
"creationTime": 1577836710004
,
"name": "d",
"creationTime": 1577836727006
,
"name": "e",
"creationTime": 1577836740040
,
"name": "f",
"creationTime": 1577836740023
...
...
...
]
【问题讨论】:
您遇到了什么错误以及数据架构是什么。我已尝试使用您的数据并且它工作正常。请提供更多详细信息。 您使用的 Unix 时间 (1577836740000L) 不是 12 月 31 日 23:59:59,而是 12 月 31 日 23:59:00。在 12 月 31 日 23:59:59 的过滤器中使用 1577816999,这不会给出任何值,因为您的显示日期在 12 月 31 日 23:59:59 之前。 @Nikk 糟糕的是缓存问题 【参考方案1】:请以以下代码为例
import spark.implicits.
val inputData = ( """[ "name":"vaquar khan","RecordNumber": 2, "Zipcode": 704, "ZipCodeType": "STANDARD", "City": "PASEO COSTA DEL SUR", "State": "PR","name":"Zidan khan", "RecordNumber": 10, "Zipcode": 709, "ZipCodeType": "STANDARD", "City": "BDA SAN LUIS", "State": "PR"] """);
val inputDataDf = spark.read.json(Seq(inputData).toDS)
inputDataDf.show()
scala> inputDataDf.show
+-------------------+------------+-----+-----------+-------+-----------+
| City|RecordNumber|State|ZipCodeType|Zipcode| name|
+-------------------+------------+-----+-----------+-------+-----------+
|PASEO COSTA DEL SUR| 2| PR| STANDARD| 704|vaquar khan|
| BDA SAN LUIS| 10| PR| STANDARD| 709| Zidan khan|
+-------------------+------------+-----+-----------+-------+-----------+
inputDataDf.filter("Zipcode not like '704%' ").show
scala>inputDataDf.filter("Zipcode not like '704%' ").show
+------------+------------+-----+-----------+-------+----------+
| City|RecordNumber|State|ZipCodeType|Zipcode| name|
+------------+------------+-----+-----------+-------+----------+
|BDA SAN LUIS| 10| PR| STANDARD| 709|Zidan khan|
+------------+------------+-----+-----------+-------+----------+
【讨论】:
以上是关于在 Spark 中过滤 Big number 上的数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spark Java 在 Big Query 中写入 Date 数据类型时出现问题