2017-01-31 17 views
1

Sparkの新機能ですが、Sparkライブラリに含まれるDataFrameライブラリを使用してデータを操作しようとしました。IntellijプラットフォームのsparkでDataFrame for Javaを認識できません

私のIDEがシンボルDataFrameを解決できないことを示すエラーが発生しました。私はインターネット上の関連する問題を検索し、彼らが推奨する解決策に従ったが、結果は私の場合を解決しなかった。

以下は私のコードです。エラーはCannot resolve symbol DataFrameです。

import org.apache.spark.SparkConf; 
import org.apache.spark.api.java.JavaSparkContext; 
import org.apache.spark.sql.SQLContext; 


public class Test { 
    public static void main(String[] args) throws Exception{ 
     String inputFile = args[0]; 
     String outputFile = args[1]; 
     SparkConf conf = new SparkConf().setAppName("Data Transformation") 
       .set("spark.serializer","org.apache.spark.serializer.KryoSerializer") 
       .setMaster("local[*]"); 

     JavaSparkContext sc = new JavaSparkContext(conf); 

     SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc); 

     //below statement throw error in the DataFrame declaration. 
     DataFrame df = sqlContext.read().json("examples/src/main/resources/people.json"); 

     sc.stop(); 
     sc.close(); 
    } 
} 

と私のpom.xmlは以下の通りです。

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.bistel</groupId> 
    <artifactId>demo-maven</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 

     <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.10 --> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-sql_2.10</artifactId> 
      <version>2.0.1</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 --> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.10</artifactId> 
      <version>2.0.1</version> 
     </dependency> 
    </dependencies> 
</project> 

私は、このような火花コアと火花-SQLなど、関連するすべてのライブラリ指定されたが、私はこのエラーを得た理由を私は知りません。私はScala言語で同じ問題を解決しましたが、Javaではできませんでした。

+0

特定の質問とは無関係に、古いsematicsでspark 2.0.1を使用している理由はありますか? Sparkセッションの代わりにSparkコンテキストとSQLコンテキストを使用しているようで、2.11の代わりにscala 2.10のアーティファクトを使用しています。 –

+0

sparkプラットフォームに含まれている多数のバージョンに非常に混乱しています。特に、私は別のプラットフォーム(spark、scala ..)のどのバージョンがそれらをうまく使用するために互換性があるのか​​分かりませんでした。あなたが私にスパークとスカラのバージョンの使い方についての指針を与えたり、スパークのバージョンに関するウェブサイトを私に教えてもらえたら嬉しいです。 – sclee1

+0

pomのバージョン(あなたのケースでは2.0.1)がスパークバージョンです。一般的にsparkバージョン2.X.Xには多くの変更が加えられています(そして、実際には1.6.X用に書かれたいくつかのコードを壊す可能性があります)。可能であれば、すべての新機能がそこに向けられているので、あなたはspark 2バージョンで作業する必要があります。特にspark 2.X.Xはspark 1.X.Xとの互換性を保証しません。スカラのバージョンは、アーティファクトID(_2.10または_2.11)で定義されています。これらの2つのスカラのバージョンは互換性がないので、使用するものすべてが互換性のあるバージョンであることを確認する必要があります。私はスパーク2.X.X(デフォルト)の2.11を使用することをお勧めします。 –

答えて

1

あなたがデータフレームのインポートが欠落しています

import org.apache.spark.sql.DataFrame 
+0

問題はバージョンの問題でした。問題は私が使用したsparkライブラリのバージョンです。 2.0.1のバージョンはDataFrameを提供しません。バージョンを1.6.0にダウングレードし、 'import org.apache.spark.sql.DataFrame'をインクルードすることができました。ありがとう。 – sclee1

0

問題はバージョンの問題でした。問題は私が使用したsparkライブラリのバージョンです。 2.0.1のバージョンはDataFrameを提供しません。バージョンを1.6.0にダウングレードし、インポートorg.apache.spark.sql.DataFrameを含めることができました。

以下は新しいpom.xmlです。

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.bistel</groupId> 
    <artifactId>demo-maven</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 

     <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 --> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.10</artifactId> 
      <version>1.6.0</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.11 --> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-sql_2.10</artifactId> 
      <version>1.6.0</version> 
     </dependency> 

    </dependencies> 
</project> 
+1

2.1.0はデータフレームを提供します。これは、1.6とは異なる定義にすぎません。 1.6では、DataFrameはフルクラスです。 2.1(または2.0.1)ではDataset [行] –

+0

の別名です。このコメントはGoogle Spark 2.1のDataFrameをGoogleで検索したときの最初の結果ではありません。 – Chry007

関連する問題