1.Sparkソースコードをダウンロードして構成します
最初にSparkソースコードをダウンロードします:https://github.com/apache/spark/tree/v2.4.5
公式ウェブサイトアドレス:https://github.com/apache/spark
ここでは、クラウドホストでコンパイルした後、ウェアハウスをローカルにプルし、ローカルのMavenとウェアハウスのアドレスを構成するのが最適です。Windowsでのダウンロードは遅くなる可能性があります。待つことができない場合は、壁にかけることができます。
メインのpomファイルでscalaバージョンとhadoopバージョンを変更できます
<hadoop.version>2.6.0-cdh5.16.2</hadoop.version>
<scala.version>2.12.10</scala.version>
<scala.binary.version>2.12</scala.binary.version>
必要に応じて、CDHウェアハウスのアドレスをメインpomhttps://repository.cloudera.com/artifactory/cloudera-repos/に追加できます。
2.Sparkソースコードをコンパイルします
Sparkソースコードをコンパイルする前に、いくつかの変更を加える必要があります。これは、提供されたスコープがClassNotFoundExceptionを報告することを規定しているためです。
- hive-thriftserverモジュールの下のpom.xmファイルを変更します
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<!-- <scope>provided</scope>-->
</dependency>
メインのpom.xmlファイルを変更します
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-continuation</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-proxy</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-plus</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
<!-- <scope>provided</scope>-->
</dependency>
将如下换成compile
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<scope>compile</scope>
</dependency>
この理由によって引き起こされた他の同様のClassNotFoundExceptionsがある場合は、コメントしてください
git-bashを使用してコンパイルし、コマンドmvn clean package -DskipTests=true
を使用してgitbashでコンパイルします
3.ソースコードをIDEAにインポートします
ソースコードはMavenモードであり、IDEAをインポートした後、依存関係が読み込まれるのを待ちます
コンパイルする前にspark-sql
、テストパッケージの下のパッケージを削除する必要がありますstreaming
。そうしないと、ビルドプロジェクト中にここに入力され、java.lang.OutOfMemoryError:GCオーバーヘッド制限を超えました。クリックしてBuild Project
コンパイルします。
コンパイルが成功したら、SparkSQLをデバッグできます
4.SparkSQLをローカルでデバッグします
hive-thriftserverモジュールを見つけ、mainの下に新しいリソースディレクトリを作成し、それをリソースディレクトリとしてマークし
ます。クラスター上の次の構成ファイルをresourcesディレクトリのhive
-site.xmlにコピーします。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop:9083</value>
<description>指向的是运行metastore服务的主机</description>
</property>
</configuration>
注:ここではhive-site.xmlのみが必要です
サーバーはメタストアサービスを開始する必要があります
hive --service metastore &
SparkSQLCLIDriverを実行します
実行する前に、VMオプションにパラメーターを追加する必要があります
-Dspark.master=local[2] -Djline.WindowsTerminal.directConsole=false
spark-sql (default)> show databases;
show databases;
databaseName
company
default
hive_function_analyze
skewtest
spark-sql (default)> Time taken: 0.028 seconds, Fetched 10 row(s)
select * from score;
INFO SparkSQLCLIDriver: Time taken: 1.188 seconds, Fetched 4 row(s)
id name subject
1 tom ["HuaXue","Physical","Math","Chinese"]
2 jack ["HuaXue","Animal","Computer","Java"]
3 john ["ZheXue","ZhengZhi","SiXiu","history"]
4 alice ["C++","Linux","Hadoop","Flink"]
spark-sql (default)>
総括する:
Sparkソースコードをダウンロードし、コマンドラインを使用してアイデアをインポートする前にコンパイルし、コンパイルが成功した後にアイデアをインポートし、アイデアをインポートした後にビルドプロジェクトを開始します。この時点で、エラーが報告されます:calss not見つかった。ソースを生成できます。提供されたアイテムをゆっくりと問題を解決し、最後にケースをテストに使用します。