2017-03-04 19 views
0

我创建了一个Maven项目的SparkSql和蜂巢连接和写了下面的示例代码:如何使用SparkSql和Hive为maven创建pom.xml?

SparkSession spark = SparkSession 
      .builder() 
      .appName("Java Spark Hive Example") 
      .master("local[*]") 
      .config("hive.metastore.uris", "thrift://localhost:9083") 
      .enableHiveSupport() 
      .getOrCreate(); 
try{ 
    spark.sql("select * from health").show(); 
} catch(Exception AnalysisException) { 
    System.out.println("table not found"); 
} 

我使用星火2.1.0和1.2.1蜂房

对于运行上面的代码,我从Spark文件夹中导入Jar文件并将其包含在项目中。我没有使用Maven Pom.xml来完成这个特定的工作。但是当我转向像AWS这样的更大集群时,我需要运行我的JAR文件。

我无法运行,因为Maven无法找到依赖关系。所以我想添加依赖关系。我试过这个:

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.10</artifactId> 
    <version>1.2.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-hive_2.10</artifactId> 
    <version>1.2.1</version> 
</dependency> 

但它没有工作,我无法看到以前通过添加JAR文件得到的输出。
我想知道我是否做错了,如果是的话请告诉我该怎么做?即使按照文档中的Spark说明,我如何将hive-site.xmlhdfs-site.xml与我的项目一起添加到pom.xml中?目前使用IntelliJ。 请让我知道我能做些什么来解决我的问题?

回答

0

我看到有一个错误配置的依赖关系。

在你的Maven依赖你的spark-sql & spark-hive1.2.1版本,但spark-core是版本2.1.0

更改所有依赖于相同的版本号,并应工作

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-core_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-hive_2.10</artifactId> 
    <version>2.1.0</version> 
</dependency> 

spark-core依赖http://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10/2.1.0 spark-sql依赖关系http://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.10/2.1.0 spark-hive依赖关系http://mvnrepository.com/artifact/org.apache.spark/spark-hive_2.10/2.1.0

+0

“hive-site.xml”怎么样?我需要手动吗? –

+0

是的,你需要把'hive-site.xml'文件放在你的项目'resources'中 –

+0

没有兄弟没有工作。我试过了。它在依赖关系上显示红色。我认为依赖关系不存在于maven中。 –