未找到 Spark SQL 包
Posted
技术标签:
【中文标题】未找到 Spark SQL 包【英文标题】:Spark SQL package not found 【发布时间】:2016-03-30 08:00:14 【问题描述】:我对 Spark 还很陌生,遇到以下问题:当我尝试导入 SQLContext 时:
import org.apache.spark.sql.SQLContext;
或尝试显式初始化 SQLContext 变量:
SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);
我从 Eclipse 收到一个错误:
无法解析导入的org.apache.spark.sql.SQLContext
我已经将 Spark 放入依赖文件中,除了 SQLContext 其他一切都很好。整个代码:
package main.java;
import java.io.Serializable;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SQLContext;
public class SparkTests
public static void main(String[] args)
SparkConf conf = new SparkConf().setAppName("SparkMain");
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);
//DataFrame df = sqlContext
System.out.println("\n\n\nHello world!\n\n\n");
当我尝试用mvn package
编译它时,我得到编译错误:
包 org.apache.spark.sql 不存在
任何想法为什么找不到 SQL 包?
编辑:
依赖文件pom.xml:
<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">
<groupId>edu.berkeley</groupId>
<artifactId>simple-project</artifactId>
<modelVersion>4.0.0</modelVersion>
<name>Simple Project</name>
<packaging>jar</packaging>
<version>1.0</version>
<dependencies>
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
</project>
【问题讨论】:
【参考方案1】:如果您想在项目中使用 Spark SQL 或 DataFrames
,您必须添加 spark-sql
artifact 作为依赖项。在这种特殊情况下:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId> <!-- matching Scala version -->
<version>1.6.1</version> <!-- matching Spark Core version -->
</dependency>
应该可以解决问题。
【讨论】:
这很有帮助,即使官方网站中提到的 spark 示例缺少这种依赖关系。 github.com/apache/spark/blob/v2.1.0/examples/pom.xml以上是关于未找到 Spark SQL 包的主要内容,如果未能解决你的问题,请参考以下文章
Spark AnalysisException 未找到全局表或视图
Spark-SQL CLI:未调用 SupportsPushDownFilters.pushFilters