引言
自动Spark2.0发布以来,官方最开始推荐的代码由
final SparkConf conf = new SparkConf().setMaster("local").setAppName("---");
final JavaSparkContext ctx = new JavaSparkContext(conf);
这种形式转化成为了
SparkSession spark = SparkSession
.builder()
.master("local")
.appName("---")
.getOrCreate();
这种形式,但是这样对于Java程序员有一定问题。
问题
当我们使用Java语言进行编程的时候,尤其是需要对文本文件进行textFile读取的时候,容易产生类型错误,这样的原因是因为由上面代码实例化的spark调用sparkContext()方法获取的context对象是scala的SparkContext对象,而不是我们最开始的手动方法获取的JavaSparkContext对象。
所以,当我们调用textFile方法的时候,返回的数据类型为RDD而不是JavaRDD。
解决方法
JavaRDD<String> text =
JavaSparkContext.fromSparkContext(spark.sparkContext())
.textFile("path");