我试图得到一周的第一天,试图找出它是星期一还是星期日与下面的代码,但我得到下面的错误
spark.sql("""Select
reflect("java.util.Calendar", "getFirstDayOfWeek") as test
""").show(20,False)
数据类型不匹配:找不到与java.util.Calendar中的参数类型匹配的静态方法
您只能传递特定类中可用的静态方法来反映函数。为了实现所需的输出,我们可以通过使用python的datetime或调用Calendar类中可用的getInstance静态方法来定义UDF,并使用regex提取getFirstDayOfWeek。
from pyspark.sql import *
from pyspark.sql.functions import *
spark = SparkSession.builder.master("local[*]").getOrCreate()
spark.sql("select reflect('java.util.Calendar', 'getInstance') as calendar")
.withColumn("firstDayOfWeek", regexp_extract("calendar", ".*firstDayOfWeek=(\d+).*", 1))
.show()
+--------------------+--------------+
| calendar|firstDayOfWeek|
+--------------------+--------------+
|java.util.Gregori...| 1|
+--------------------+--------------+