Java spark和kafka的集成,spark提交jar中的例外
在提交一个将卡夫卡与ubuntu下的spark集成在一起的jar文件时,得到了一个NullPointerException。我正在尝试运行代码 我试图检查在Ubuntu下安装spark是否需要设置HADOOP_HOME;但是,HADOOP_HOME没有设置,仔细检查了jar的参数Java spark和kafka的集成,spark提交jar中的例外,java,apache-spark,hadoop,Java,Apache Spark,Hadoop,在提交一个将卡夫卡与ubuntu下的spark集成在一起的jar文件时,得到了一个NullPointerException。我正在尝试运行代码 我试图检查在Ubuntu下安装spark是否需要设置HADOOP_HOME;但是,HADOOP_HOME没有设置,仔细检查了jar的参数 ./bin/spark-submit --class "org.apache.spark.examples.streaming.JavaKafkaWordCount" --packages org.apache.spa
./bin/spark-submit --class "org.apache.spark.examples.streaming.JavaKafkaWordCount" --packages org.apache.spark:spark-streaming-kafka-0-10_2.11:2.1.0 --master local[*] --jars ~/software/JavaKafkaWordCount.jar localhost:2181 test-consumer-group streams-plaintext-input 1
线程“main”java.lang.NullPointerException中的异常位于 org.apache.hadoop.fs.Path.getName(Path.java:337)位于 org.apache.spark.deploy.DependencyUtils$.downloadFile(DependencyUtils.scala:136) 在 org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:367) 在 org.apache.spark.deploy.SparkSubmit$$anonfun$prepareSubmitEnvironment$7.apply(SparkSubmit.scala:367) 在scala.Option.map(Option.scala:146)处 org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:366) 位于org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:143) 位于org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86) 在 org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924) 位于org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933) 位于org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
您的路径uri jar不可理解,请参见 在你的spark提交中,像这样更改args
--jars/fullpath/JavaKafkaWordCount.jar
而不是--jars~/software/JavaKafkaWordCount.jar
打印完整的堆栈跟踪和行号很难给出答案,因为我在终端上运行了它,这只是出现的例外。我想这是在“org.apache.hadoop.fs.Path.getName(Path.java:337)at”这一行中,这是hadoop文件系统的问题吗?`--jars/fullpath/JavaKafkaWordCount.jar`试试看这里的执行模式我得到了相同的错误:WARN NativeCodeLoader:无法为您的平台加载本机hadoop库。。。在org.apache.hadoop.fs.Path.getName(Path.java:337)上的线程“main”java.lang.NullPointerException中使用适用的内置java类我得到了这个异常:ERROR JobScheduler:ERROR运行作业流作业156041424000 ms.0 java.lang.IllegalArgumentException:org.apache.xbean.asm6.ClassReader上不支持的类文件主版本55。(ClassReader.java:166)…你必须问另外一个问题当你用一个版本编译并用另一个较低版本运行时,这个不受支持的类会出现。我正在检查兼容的版本。我正在使用Scala 2.11.12、kafka_2.12-2.2.0、spark-2.4.3、java版本“11.0.2”2019-01-15 LTS、spark-streaming-kafka-0-8-assembly_2.11-2.4.3,我不知道要使用哪些版本,哪些是兼容的?
/**
* Download a file from the remote to a local temporary directory. If the input path points to
* a local path, returns it with no operation.
*
* @param path A file path from where the files will be downloaded.
* @param targetDir A temporary directory for which downloaded files.
* @param sparkConf Spark configuration.
* @param hadoopConf Hadoop configuration.
* @param secMgr Spark security manager.
* @return Path to the local file.
*/
def downloadFile(
path: String,
targetDir: File,
sparkConf: SparkConf,
hadoopConf: Configuration,
secMgr: SecurityManager): String = {
require(path != null, "path cannot be null.")
val uri = Utils.resolveURI(path)
uri.getScheme match {
case "file" | "local" => path
case "http" | "https" | "ftp" if Utils.isTesting =>
// This is only used for SparkSubmitSuite unit test. Instead of downloading file remotely,
// return a dummy local path instead.
val file = new File(uri.getPath)
new File(targetDir, file.getName).toURI.toString
case _ =>
val fname = new Path(uri).getName()
val localFile = Utils.doFetchFile(uri.toString(), targetDir, fname, sparkConf, secMgr,
hadoopConf)
localFile.toURI().toString()
}
}