Apache spark 使用日期列Java Spark编写分区
我正在使用Java Spark 我正在尝试按日期分区列写入配置单元表, 我尝试的是:Apache spark 使用日期列Java Spark编写分区,apache-spark,hive,hdfs,Apache Spark,Hive,Hdfs,我正在使用Java Spark 我正在尝试按日期分区列写入配置单元表, 我尝试的是: Dataset<Row> ds = dataframe.select(cols).withColumn("load_date", function.lit("08.07.2018").cast("date")); ds.write().mode(mode).partitionBy("load_date").save(hdfsDirectory); 这意味着空值 那么,我如何按日期编写分区呢 谢谢。
Dataset<Row> ds = dataframe.select(cols).withColumn("load_date", function.lit("08.07.2018").cast("date"));
ds.write().mode(mode).partitionBy("load_date").save(hdfsDirectory);
这意味着空值
那么,我如何按日期编写分区呢
谢谢。要使用
cast
日期必须采用标准格式(年-月-日)
Dataset ds=dataframe.select(cols).withColumn(“加载日期”,function.lit(“2018-07-08”).cast(“日期”);
否则,请使用o.a.s.sql.functions.to_date函数并提供与兼容的格式。要使用
cast
日期必须采用标准格式(年-月-日)
Dataset ds=dataframe.select(cols).withColumn(“加载日期”,function.lit(“2018-07-08”).cast(“日期”);
否则,请使用o.a.s.sql.functions.to_date函数并提供与兼容的格式。更简单的方法是使用以下函数
from_unixtime(unix_时间戳('2016/06/01','yyyy/MM/dd'),'yyyyymmdd')
我更喜欢使用spark sql来实现这一点
ds.createOrUpdateTempTable("tempTable")
val dsWithLoadDate = spark.sql("select *, from_unixtime(unix_timestamp('2016/06/01','yyyy/MM/dd'),'yyyyMMdd') as load_date from tempTable")
dsWithLoadDate.write().mode(mode).partitionBy(“加载日期”).save(hdfsDirectory)代码>更简单的方法是使用以下函数
from_unixtime(unix_时间戳('2016/06/01','yyyy/MM/dd'),'yyyyymmdd')
我更喜欢使用spark sql来实现这一点
ds.createOrUpdateTempTable("tempTable")
val dsWithLoadDate = spark.sql("select *, from_unixtime(unix_timestamp('2016/06/01','yyyy/MM/dd'),'yyyyMMdd') as load_date from tempTable")
dsWithLoadDate.write().mode(mode).partitionBy(“加载日期”).save(hdfsDirectory)代码>如果使用cast(“日期”)
则需要正确设置日期格式。试试“2018-08-07”,看看它是否有效。如果使用cast(“日期”)
则需要正确设置日期格式。试试“2018-08-07”,看看它是否有效。如果我想要不同的格式?yyyyMMdd?我能做吗?如果我想用不同的格式?yyyyMMdd?我能做吗?
ds.createOrUpdateTempTable("tempTable")
val dsWithLoadDate = spark.sql("select *, from_unixtime(unix_timestamp('2016/06/01','yyyy/MM/dd'),'yyyyMMdd') as load_date from tempTable")