IDEA使用SparkSession读取Json文件报错 A master URL must be set in your configuration

1.错误场景

今天在学习SparkSql的时候 看了Spark源码的例子 在本地运行SparkSession读取json文件的时候 , 报 A master URL must be set in your configuration 这个错误
, 当时的代码如下

public class SqlDemo01 {

    public static void main(String[] args) {

        // SparkSqlContext , HiveContext(Spark1.3以上建议用)
        // 1.创建一个SparkSession对象 , 类始于SparkContext
        SparkSession sparkSession = SparkSession
                .builder() // builder 是用来实例化一个SparkSession对象的
                .appName("SQL")
                .config("spark.some.config.option" , "some-value")
                .getOrCreate();


        runBasicDataFrameExample(sparkSession);
        // 关闭SparkSession
        sparkSession.stop();
    }

    // 使用DataFrame 读取数据
    private static void runBasicDataFrameExample(SparkSession sparkSession){

        // 从 resources 中读取json数据
        String dataPath = "SparkSql/src/main/resources/people.json";
        Dataset<Row> df = sparkSession.read().json(dataPath);

        // 列出 DataFrame 的所有数据
        df.show();
    }
}

然后就报了 A master URL must be set in your configuration 这个错误

原因是没有设置 master 的提交方式 (源码给的例子没有设置, 误以为不需要设置)

  1. 在查询报错原因时发现还有一种 情况就是把 SparkContext 写到main方法外面, 当做公用的对象也会出现这个问题 这里记下来 以后避免 错误
2.解决方法
  1. 方法一 :
    直接添加 run configration中添加 -Dspark.master=local 在这里插入图片描述
  2. 方法二
    在创建SparkSession实例之前 创建 SparkConf 和 SparkContext 并设置master
    代码如下
    
        // 一定要加上 , 配置Master为本地
        SparkConf conf = new SparkConf()
                .setAppName("Sql")
                .setMaster("local");
        JavaSparkContext sc = new JavaSparkContext(conf);
    
        // SparkSqlContext , HiveContext(Spark1.3以上建议用)
        // 1.创建一个SparkSession对象 , 类始于SparkContext
        SparkSession sparkSession = SparkSession
                .builder() // builder 是用来实例化一个SparkSession对象的
                .appName("SQL")
                .config("spark.some.config.option" , "some-value")
                .getOrCreate();
    
    
        runBasicDataFrameExample(sparkSession);
        // 关闭SparkSession
        sparkSession.stop();
    

这样既可解决

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
第二步的完整文件是 MyBatis 的配置文件,通常是一个 XML 文件,其中包含了一些配置信息,例如数据源、Mapper 文件等。一个简单的 MyBatis 配置文件示例如下: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="cacheEnabled" value="true"/> </settings> <typeAliases> <typeAlias type="com.example.model.User" alias="User"/> </typeAliases> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> ``` 其中,`<mappers>` 标签用于配置 Mapper 文件的路径,`<mapper>` 标签用于引用 Mapper 文件。如果您的配置文件中出现了 "Element mappers must be declared" 错误,可能是因为您的 XML 文件没有按照 DTD 规范进行声明。请按照以下方式修改您的配置文件: 1. 在 XML 文件头部添加 DTD 声明,例如: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> ``` 2. 确保 `<configuration>` 标签内部包含了 `<mappers>` 标签,例如: ```xml <configuration> <!-- 其他配置 --> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> ``` 如果您的配置文件中仍然存在问题,请提供更多的细节信息,我可以帮助您更好地解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兀坐晴窗独饮茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值