IDEA importa el código fuente de Spark y compila

1. Descarga y configura el código fuente de Spark

Primero descargue el código fuente de Spark: https://github.com/apache/spark/tree/v2.4.5
dirección del sitio web oficial:https://github.com/apache/spark

Aquí, es mejor extraer el almacén localmente después de compilar en el host en la nube y configurar el maven local y la dirección del almacén. La descarga en Windows puede ser más lenta. Si no puede esperar, puede colocarlo en un muro.

Puede modificar la versión de scala y la versión de hadoop en el archivo pom principal

<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>

Si es necesario, puede agregar la dirección del almacén de CDH al pom principal https://repository.cloudera.com/artifactory/cloudera-repos/

2. Compile el código fuente de Spark

Antes de compilar el código fuente de Spark, debe modificar algunas cosas, porque el alcance estipula que proporcionado informará ClassNotFoundException

  • Modifique el archivo pom.xm en el módulo hive-thriftserver
<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>

Modificar el archivo pom.xml principal

<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>

Si hay otras ClassNotFoundExceptions similares causadas por este motivo, simplemente comente

Use git-bash para compilar, use comandos mvn clean package -DskipTests=truepara compilar en gitbash
Inserte la descripción de la imagen aquí

3. Importe el código fuente a IDEA

El código fuente está en modo Maven, después de importar IDEA, espere a que se cargue la dependencia

Antes de compilar, debe eliminar spark-sqlel paquete en el paquete de prueba streaming; de lo contrario, se ingresará aquí durante la compilación del proyecto, lo que provocará java.lang.OutOfMemoryError: GC overhead limit excedido. Haga clic para Build Projectcompilar

Después de una compilación exitosa, puede depurar SparkSQL

4. Depura SparkSQL localmente

Busque el módulo hive-thriftserver, cree un nuevo directorio de recursos en main y márquelo como un directorio de recursos.
Copie los siguientes archivos de configuración en el clúster en
hive-site.xml en el directorio de recursos

<?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>

Nota: Aquí solo se necesita hive-site.xml

El servidor necesita iniciar el servicio de metastore

hive --service metastore &

Ejecute SparkSQLCLIDriver

Antes de ejecutar, debe agregar parámetros en las opciones de 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)> 

para resumir:

Descargue el código fuente de Spark, use la línea de comando para compilar antes de importar la idea, luego importe la idea después de que la compilación sea exitosa y luego inicie el proyecto de compilación después de importar la idea. En este momento, se informará un error: calss not Encontrado. Puede Generar fuente. Elementos proporcionados, resolver lentamente el problema y, finalmente, usar el caso para probar.

Supongo que te gusta

Origin blog.csdn.net/qq_43081842/article/details/105777311
Recomendado
Clasificación