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ではできませんでした。
特定の質問とは無関係に、古いsematicsでspark 2.0.1を使用している理由はありますか? Sparkセッションの代わりにSparkコンテキストとSQLコンテキストを使用しているようで、2.11の代わりにscala 2.10のアーティファクトを使用しています。 –
sparkプラットフォームに含まれている多数のバージョンに非常に混乱しています。特に、私は別のプラットフォーム(spark、scala ..)のどのバージョンがそれらをうまく使用するために互換性があるのか分かりませんでした。あなたが私にスパークとスカラのバージョンの使い方についての指針を与えたり、スパークのバージョンに関するウェブサイトを私に教えてもらえたら嬉しいです。 – sclee1
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を使用することをお勧めします。 –