簡體   English   中英

僅從 DataFrame 中列的時間戳中提取日期 - Java 中的 Spark

[英]Extract only date from timestamp from column in a DataFrame - Spark in Java

我有 cloudera-quickstart-vm-5.13.0 環境。 在這個環境中已經安裝了 Hadoop 和 Spark。 我已將一個 csv 文件放入 hdfs。 然后,我編寫了此 java 代碼來讀取 csv 並嘗試計算每天有多少條出租車路線(例如,2019 年 10 月 10 日有 29 條出租車路線,2019 年 11 月 10 日有 29 條出租車路線) 16 條出租車路線等......)。 CSV 文件字段是:

●taxi_id​ 
●pickup_datetime​ 
●passengers​ 
●pick_lon​ 
●pick_lat​ 

.我的java代碼是:

package com.bigdata.taxi;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;


public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        SparkConf conf = new SparkConf();
        conf.setAppName("My 1st Spark app");
        conf.setMaster("local[*]");
        JavaSparkContext sc = new JavaSparkContext(conf);

        SparkSession sparkSession = SparkSession.builder().sparkContext(sc.sc()).getOrCreate();

        //Now read csv , from hdfs source
        //[cloudera@quickstart ~]$ hdfs dfs -put /home/cloudera/Desktop/fares.csv hdfs://quickstart.cloudera:8020//user//cloudera//fares.csv
        Dataset<Row> df = sparkSession.read().option("header", true).option("inferSchema", "true").
                option("timestampFormat", "yyyy-MM-dd hh:mm:ss").csv("hdfs://quickstart.cloudera:8020//user//cloudera//fares.csv");
        df.show(); //only showing top 20 rows

        Dataset<Row> df2 = df.orderBy("pickup_datetime").groupBy("pickup_datetime").count();
        df2.show();
    }
}

但是,我的問題是pickup_datetime 字段不僅包含日期,還包含小時、分鍾和秒。 那么,如何通過java從數據框中的pickup_datetime列中刪除hh:mm:ss?

謝謝!

您可以添加僅包含日期的新列。 date_format在這里很有幫助。

df = df.withColumn("pickup_date", date_format(col("pickup_datetime"), "yyyy-MM-dd"));

在下面的代碼中,只使用pickup_date列而不是pickup_datetime

注意:您需要導入 Spark 函數

import static org.apache.spark.sql.functions.*;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM