Конвертировать 20180918 в 2018-09-18 в Spark?

вы также можете попробовать

$("#clickable").click(function(event) {
   var senderElementName = event.target.tagName.toLowerCase();
   if(senderElementName === 'div')
   {
       // do something here 
   } 
   else
   {
      //do something with <a> tag
   }
});
-1
задан Rakesh Kumar 20 March 2019 в 05:35
поделиться

3 ответа

Используйте функции date_format () и to_timestamp (). Проверьте это:

scala> val df = Seq((20180103),(20180105)).toDF("dt")
df: org.apache.spark.sql.DataFrame = [dt: int]

scala> df.withColumn("dt",'dt.cast("string")).withColumn("dt",date_format(to_timestamp('dt,"yyyyMMdd"),"yyyy-MM-dd")).show(false)
+----------+
|dt        |
+----------+
|2018-01-03|
|2018-01-05|
+----------+

scala>

Обратите внимание, что date_format возвращает строку, если вы хотите ее в типе данных date, тогда

scala> val df2 = df.withColumn("dt",'dt.cast("string")).withColumn("dt",date_format(to_timestamp('dt,"yyyyMMdd"),"yyyy-MM-dd"))
df2: org.apache.spark.sql.DataFrame = [dt: string]

scala> df2.printSchema
root
 |-- dt: string (nullable = true)


scala> val df3 = df2.withColumn("dt",'dt.cast("date"))
df3: org.apache.spark.sql.DataFrame = [dt: date]

scala> df3.printSchema
root
 |-- dt: date (nullable = true)


scala> df3.show(false)
+----------+
|dt        |
+----------+
|2018-01-03|
|2018-01-05|
+----------+


scala>
0
ответ дан stack0114106 20 March 2019 в 05:35
поделиться

В Pyspark вы можете сделать, как показано ниже

# create a data frame
df = sqlContext.createDataFrame(
[
("SirChillingtonIV", "20120104"), 
("Booooooo99900098", "20120104"), 
("Booooooo99900098", "20120106"), 
("OprahWinfreyJr", "20120110"), 
("SirChillingtonIV", "20120111"), 
("SirChillingtonIV", "20120114"), 
("SirChillingtonIV", "20120811")
], 
("user_name", "login_date"))


# Import functions
from pyspark.sql import functions as f

# Create data framew with new column new_date with data in desired format
df1 = df.withColumn("new_date", f.from_unixtime(f.unix_timestamp("login_date",'yyyyMMdd'),'yyyy-MM-dd'))
0
ответ дан User12345 20 March 2019 в 05:35
поделиться

Предполагая, что вы хотите String в качестве вывода, вы можете создать новую UDF для преобразования входной строки из формата yyyyMMdd в yyyy-MM-dd, как показано ниже:

def dateFormatDef(x: String): String = x.patch(4,"-",0).patch(7,"-",0)
val dateFormat = udf[String, String](dateFormatDef)

Выход в строке в ожидаемый формат:

df = df.withColumn("newFormat", dateFormat($"date"))
df.show()
+--------+----------+
|    date| newFormat|
+--------+----------+
|20180103|2018-01-03|
|20180105|2018-01-05|
|20180111|2018-01-11|
|20180112|2018-01-12|
+--------+----------+
0
ответ дан pheeleeppoo 20 March 2019 в 05:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: