Spark连接Cassandra报错求助:无活跃SparkEnv无法获取spark协议文件
解决Spark Submit中"Cannot retrieve files with 'spark' scheme without an active SparkEnv"错误
我来帮你分析下这个问题,你遇到的错误其实是命令里多传了一个不必要的参数导致的:你的spark-submit命令最后把spark://localhost:7077作为参数传给了jar包,Spark会把这个参数识别为需要分发的文件路径。但spark://协议需要依赖已经初始化的SparkEnv才能处理,而在提交任务的阶段SparkEnv还未创建,所以就抛出了这个异常。
解决方案
你只需要修改spark-submit命令,移除多余的spark://localhost:7077参数——因为你已经通过--master参数指定了集群地址,不需要再把它重复传给主类。
修改后的命令如下:
C:\Users\user\Desktop\softwares\spark-2.4.3-bin-hadoop2.7\spark-2.4.3-bin-hadoop2.7\bin>spark-submit --class com.github.boneill42.JavaDemo --master spark://localhost:7077 C:\Users\user\git\spark-on-cassandra-quickstart\target/spark-on-cassandra-0.0.1-SNAPSHOT-jar-with-dependencies.jar localhost
补充说明
从你命令里最后的localhost来看,这应该是主类需要的Cassandra地址参数,所以只保留这个参数就足够了。Spark Submit会把jar包后面的参数直接传递给主类的main方法,如果你传的是一个URL格式的字符串,Spark会自动尝试去下载对应的文件,这就触发了错误场景。
内容的提问来源于stack exchange,提问作者Harini
相关产品推荐
相关产品推荐

