2017-05-24 9 views
0

SparkのHashPartitionerを使用するためにspark-shellを使用していました。エラーは次のように表示されます。タイプHashPartitionerはorg.apache.spark.sql.SparkSessionのメンバーではありません

scala> val data = sc.parallelize(List((1, 3), (2, 4), (3, 6), (3, 7))) 
data: org.apache.spark.rdd.RDD[(Int, Int)] = ParallelCollectionRDD[0] at parallelize at <console>:24 

scala> val partitionedData = data.partitionBy(new spark.HashPartitioner(2)) 
<console>:26: error: type HashPartitioner is not a member of org.apache.spark.sql.SparkSession 
     val partitionedData = data.partitionBy(new spark.HashPartitioner(2)) 
                 ^

scala> val partitionedData = data.partitionBy(new org.apache.spark.HashPartitioner(2)) 
partitionedData: org.apache.spark.rdd.RDD[(Int, Int)] = ShuffledRDD[1] at partitionBy at <console>:26 

3番目の操作が失敗したときに2番目の操作が失敗しました。 spark-shellがsparkを探すのはなぜでしょうか?org.apache.sparkではなくorg.apache.spark.sql.SparkSessionのパッケージにあるHashPartitioner?

答えて

3

sparkは、SparkSessionオブジェクトではありませんorg.apache.sparkパッケージです。

次の例のように、org.apache.spark.HashPartitionerをインポートしたり、完全なクラス名を使用する必要があります。

import org.apache.spark.HashPartitioner 

val partitionedData = data.partitionBy(new HashPartitioner(2)) 
関連する問題