我有一个用javard写的工作火花。现在我想把输出移到dataframes,而不需要对现有代码做太多更改。我的目的是通过使用sqlContext将RDD转换为数据帧。但是不推荐使用它,所以我使用SparkSession创建SparkContext,然后使用它将RDD转换为DataFrame。
我的问题是
reduceBykey
IllegalAccessError
执行时出错,可以追溯到
reduceByKey
把我的密码给我。
这是错误
Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.mapred.FileInputFormat
下面是代码片段
SparkSession spark = SparkSession
.builder()
.appName("test")
.master("local")
.getOrCreate();
SparkContext sc = spark.sparkContext();
JavaRDD<String> lineInput = spark.sparkContext()
.textFile("/tmp/test.txt", 1)
.toJavaRDD();
JavaPairRDD<String, String> pairInput = lineInput
.mapToPair(new FlatRDDToPairRDD());
//FlatRDDToPairRDD class takes a string and returns a Tuple
JavaPairRDD<String, String> reducedPair = pairInput.reduceByKey(new TestReducer());
JavaRDD<String> outputRDD = reducedPair.map(new
PairRDDToFlatValueRDD());
//PairRDDToFlatValueRDD takes a Tuple and returns as string
这是我在pom文件中的依赖项
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.3.1</version>
</dependency>
还有人面临过类似的问题吗?关于如何继续进行的一些提示将很有帮助。