选项';基本路径';必须是Scala目录
我有这段代码,它给出的错误是basepath必须是dir。只想运行一个简单的卡夫卡辛流媒体选项';基本路径';必须是Scala目录,scala,apache-spark,apache-kafka,Scala,Apache Spark,Apache Kafka,我有这段代码,它给出的错误是basepath必须是dir。只想运行一个简单的卡夫卡辛流媒体 val checkPointDir = "/tmp/offsets/" // "hdfs://hdfscluster/user/yarn/tmp/" def main(args: Array[String]): Unit ={ lazy val spark = SparkSession .builder .appNa
val checkPointDir = "/tmp/offsets/" // "hdfs://hdfscluster/user/yarn/tmp/"
def main(args: Array[String]): Unit ={
lazy val spark = SparkSession
.builder
.appName("KafkaProducer")
.master("local[*]")
.getOrCreate()
val query = writeStream(jsonDF, "test")
query.awaitTermination()
}
def writeStream(df:DataFrame, topic:String): StreamingQuery = {
// log.warn("Writing to kafka")
df
// .selectExpr( "CAST(value AS STRING)")
.writeStream
.format("kafka")
.option("kafka.bootstrap.servers", kafkaServers)
.option("topic", topic)
.option("checkpointLocation", checkPointDir)
.outputMode(OutputMode.Update)
.start()
}
我的用户是此文件夹/tmp/offset的所有者。我得到了这个例外
java.lang.IllegalArgumentException:选项“basePath”必须是目录“checkpointLocation”
应提供目录的规范路径
此目录用于存储实际的中间RDD。如果存在多个检查点,则可以存储多个RDD。每个RDD的数据都存储在单独的目录中。但是,RDD本身是分区的,每个分区都存储在RDD目录中的一个单独文件中。在HDFS中存储文件时,Spark必须遵守“最大块大小”属性。在单个文件中存储此类结构化数据是不可能的,因此目录是不可能的。Nope的可能副本!我已经试过了。它与此不同。您可以尝试像下面这样提供文件的规范路径
新文件(path)。getCanonicalFile
哪个文件?我制作数据帧的那个?Im使用一个本地文件,并使用spark.readStream.text(PATH_TO_file)读取该文件,getCanonicalPath也返回相同的路径。/home/user/Documents/fn/Proto2/src/main/resource/events-identification-carrier-a.txt类似于此