【发布时间】:2019-04-14 16:51:50
【问题描述】:
我正在尝试使用 spark.read 来获取我的 UDF 中的文件计数,但是当我执行程序时,此时会挂起。
我在数据框的列中调用 UDF。 udf 必须读取一个文件并返回它的计数。但它不起作用。我将一个变量值传递给 UDF 函数。当我删除 spark.read 代码并简单地返回它工作的数字时。但 spark.read 不能通过 UDF 工作
def prepareRowCountfromParquet(jobmaster_pa: String)(implicit spark: SparkSession): Int = {
print("The variable value is " + jobmaster_pa)
print("the count is " + spark.read.format("csv").option("header", "true").load(jobmaster_pa).count().toInt)
spark.read.format("csv").option("header", "true").load(jobmaster_pa).count().toInt
}
val SRCROWCNT = udf(prepareRowCountfromParquet _)
df
.withColumn("SRC_COUNT", SRCROWCNT(lit(keyPrefix)))
SRC_COUNT 列应该获取文件的行
【问题讨论】:
-
您不能在 UDF 中创建或使用
DataFrame,此外,spark对象仅存在于执行程序的 驱动程序 中它将是null。例如,看看这个:stackoverflow.com/questions/48893002/…
标签: scala apache-spark