我正在尝试加入两个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)。