我有一个String数据类型的火花数据框中的列(日期为yyyy-MM-dd模式)我想以MM/dd/yyyy模式显示列值
我的数据是
val df = sc.parallelize(Array(
("steak", "1990-01-01", "2000-01-01", 150),
("steak", "2000-01-02", "2001-01-13", 180),
("fish", "1990-01-01", "2001-01-01", 100)
)).toDF("name", "startDate", "endDate", "price")
df.show()
+-----+----------+----------+-----+
| name| startDate| endDate|price|
+-----+----------+----------+-----+
|steak|1990-01-01|2000-01-01| 150|
|steak|2000-01-02|2001-01-13| 180|
| fish|1990-01-01|2001-01-01| 100|
+-----+----------+----------+-----+
root
|-- name: string (nullable = true)
|-- startDate: string (nullable = true)
|-- endDate: string (nullable = true)
|-- price: integer (nullable = false)
Run Code Online (Sandbox Code Playgroud)
我想以MM/dd/yyyy模式显示endDate.我能做的就是将列从String转换为DateType
val df2 = df.select($"endDate".cast(DateType).alias("endDate"))
df2.show()
+----------+
| endDate|
+----------+
|2000-01-01|
|2001-01-13|
|2001-01-01|
+----------+
df2.printSchema()
root
|-- endDate: …Run Code Online (Sandbox Code Playgroud) 我使用 ListIterator 在列表中进行迭代,因为如果满足某些条件,我想在运行时添加一些元素。
但是添加到列表中的新元素永远不会包含在迭代器中
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Example {
public static void main(String[] s)
{
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(5);
list.add(6);
ListIterator<Integer> listIterator = list.listIterator();
while(listIterator.hasNext())
{
int i = listIterator.next();
System.out.println("List Element: " + i + " | List size: " + list.size());
if(i==1)
{
//Adding '3' to list
listIterator.add(3);
System.out.println("Added Element: 3");
}
if(i==2)
{
//Adding '4' to list
listIterator.add(4);
System.out.println("Added Element: 4");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
下面是输出
List Element: …Run Code Online (Sandbox Code Playgroud)