当前位置: 首页 > 知识库问答 >
问题:

date_trunc函数在添加新列时不能使用spark dataframe

龙成仁
2023-03-14

我想在包含日期列的dataframe上使用date_trunc函数,这样我就可以创建新列,该列将提供记录与哪个季度相关联的信息。

我试过的东西如下:

import org.apache.spark.sql.functions._
val test = Seq(("2010-03-05"),("2018-01-16"),("2018-04-20")).toDF("TestDates")
display(test)  //this displays the date in the notebook

val datetrunctest = test.withColumn("Quarter", date_trunc("QUARTER",$"TestDates"))
display(datetrunctest)  //this gives me an error saying **error: not found: value date_trunc**

另外,当我尝试使用函数名的import语句时,它会给出如下错误:

import org.apache.spark.sql.functions.date_trunc
Error : value date_trunc is not a member of object org.apache.spark.sql.functions
val ddd = spark.sql("Select TestDates,date_trunc('QUARTER', TestDates) as QuarterDate from test.DailyDates")
display(ddd)

共有1个答案

苍嘉澍
2023-03-14

检查您正在使用的spark版本,

打开Spark shell终端并输入命令

sc.version或spark-submit--version

public static Column quarter(Column e)
import org.apache.spark.sql.functions._
val test = Seq(("2010-03-05"),("2018-01-16"),("2018-04-20")).toDF("TestDates")
val datetrunctest = test.withColumn("Quarter", quarter($"TestDates"))
 类似资料:
  • 在我的scala程序中,我有一个dataframe,其中有两列和(类型都为)。除此之外,我有一个先前定义的对象和一些方法和属性。在这里,我想要使用dataframe的当前值和中的属性向dataframe添加一个新列。 例如,如果我有下面的dataframe: 谢谢你。

  • 我有一只熊猫df[见下文]。如何将函数中的值添加到新列“price”?

  • 问题内容: 我有一个pandas df [见下文]。如何将函数中的值添加到新列“价格”中? 问题答案: 通常,您可以使用apply函数。如果函数仅需要一列,则可以使用: 如@EdChum建议。如果您的函数需要多列,则可以使用类似以下内容:

  • /spark/python/pyspark/sql/dataframe.py“,第1313行,在withColumn assert isinstance(col,Column)中,”col应该是Column“assertionerror:col应该是Column 如何使用自定义函数或randint函数为列生成随机值?

  • 到目前为止我们只使用了C++内置的函数,然而也可以添加新函数。实际上我们已经见过一个函数定义了:main。main这个函数名很特殊,因为它表示程序开始执行的地方,但main函数的语法形式和其它函数定义一样: void 函数名(参数列表) { 语句 } 你可以为自己的函数任意定义名称,但不能命名为main或者其它C++关键字。参数列表指定了使用(或称为调用)新函数所需要提供的信息(如果有的话)

  • 大家好,我想在数据帧的每一行中使用现有列添加新列,我正在Spark Scala中尝试这样做。。。df是包含可变列数的数据帧,只能在运行时确定。 但这个错误是eclipse本身 无法找到存储在数据集中的类型的编码器。通过导入spark.implicits.支持原始类型(Int,String等)和产品类型(case类)_将在未来版本中添加对其他类型序列化的支持。 方法映射没有足够的参数:(隐式证据7美