引言
自动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");
使用JavaSparkContext
的fromSparkContext
方法对原本的context
进行数据类型转化即可。