在Spark数据集中使用java.util.date

时间:2018-06-26 15:58:42

标签: java apache-spark apache-spark-sql

我正在尝试加入两个spark数据集以得到一个数据集。 我的第一个数据集是从Cassandra数据库生成的Java bean类创建的:

这是我的java bean,不允许编辑它:

public class IdCellSynchro implements Serializable {
 @PartitionKey
 @Column
 private Long id_cell;
 @Column
 private Date last_synchro_date; 
 @Column
 private Date last_request_data_date; }

然后像这样创建数据集:

Dataset<IdCellSynchro> dSTileCells = sparkSession.createDataset(tile.getCellPoints(), encoder);   
Encoder<IdCellSynchro> encoder = Encoders.bean(IdCellSynchro.class);
Dataset<Row> dFTileCells = dSTileCells.toDF();

创建数据集后,“日期”字段将采用以下结构格式:

|-- last_request_data_date: struct (nullable = true)
|    |-- date: integer (nullable = false)
|    |-- day: integer (nullable = false)
|    |-- hours: integer (nullable = false)
|    |-- minutes: integer (nullable = false)
|    |-- month: integer (nullable = false)
|    |-- seconds: integer (nullable = false)
|    |-- time: long (nullable = false)
|    |-- timezoneOffset: integer (nullable = false)
|    |-- year: integer (nullable = false)

而且内容很奇怪:

+-----------+----------------------+-----------------+
|    id_cell|last_request_data_date|last_synchro_date|
+-----------+----------------------+-----------------+
|70013300261|  [26,15,24,5,39,10...|             null|
|70013300262|  [26,15,24,5,39,10...|             null|
+-----------+----------------------+-----------------+

我试图通过使用withColumn函数创建自己的格式来获取此结构的字段,但该格式与正确的日期不符。

+---------+-----+---+----+-----+-------+----------+----+--------------+
|     year|month|day|date|hours|minutes|   seconds|time|timezoneOffset|
+---------+-----+---+----+-----+-------+----------+----+--------------+
|536879861|   39| 15|  26|   24|      5|1018322500| 118|             1|
|536879861|   39| 15|  26|   24|      5|1018322501| 118|             1|
+---------+-----+---+----+-----+-------+----------+----+--------------+

目标是使用此Date字段执行操作à与从Parquet加载的第二个数据集联接,其中Date字段是标准格式的dateTime:| 2018-05-01 00:00:00 | < / p>

您有任何想法来处理带有火花的这种日期(java.util.date)。

0 个答案:

没有答案