首页 > 解决方案 > spark-submit '无法将'startDate'强制转换为格式化日期(长)'

问题描述

出现错误:错误:当我运行 spark submit 时,无法将“startDate”强制转换为格式化日期(长),如下所示:

dse -u cassandra -p cassandra spark-submit --class com.abc.rm.Total_count \
   --master dse://x.x.x.x:9042 TotalCount.jar \
   "2024-06-11 00:00:00.000+0000" "2027-11-15 00:00:00.000+0000" \
   10-118-16-132.bbc.ds.com pramod history

下面是我的代码:

package com.abc.rm
import com.datastax.spark.connector._
import org.apache.spark.SparkContext
object Total_count {
  def main(args: Array[String]):Unit = {
    var startDate = args(0)
    var endDate = args(1)
    val master = args(2)
    var ks = args(3)
    var table_name = args(4)
    println("startDate-->"+startDate)
    println("endDate-->"+endDate)
    println("master-->"+master)

    val conf = new org.apache.spark.SparkConf().setAppName("Total_count")
       .set("spark.cassandra.connection.host", master)
       .set("spark.cassandra.auth.username","cassandra")
       .set("spark.cassandra.auth.password","cassandra")

    var sc = new SparkContext(conf)

    val rdd = sc.cassandraTable("pramod", "history")
        .where("sent_date>='startDate' and sent_date <='endDate'")
        .cassandraCount()
    println("count--> "+rdd)
    sc.stop()
    System.exit(1)
}}

如何传递/转换参数。

标签: scalaapache-sparkdatastaxspark-submit

解决方案


您没有传递参数,而是传递字符串startDateendDate字面意思。要使其正常工作,您需要将其编写为

.where(s"sent_date>='$startDate' and sent_date <='$endDate'")

推荐阅读