Apache spark 在spark中使用hive数据库

Apache spark 在spark中使用hive数据库,apache-spark,hive,apache-spark-sql,hortonworks-sandbox,Apache Spark,Hive,Apache Spark Sql,Hortonworks Sandbox,我是spark的新手,尝试使用HortonWorks沙箱在TPCD基准表上运行一些查询。 在沙盒上通过shell或配置单元视图使用配置单元时没有问题。问题是,如果我想使用spark,我不知道如何连接到数据库。 如何在spark中使用配置单元数据库来运行查询? 到目前为止,我知道的唯一解决方案是手动重建每个表,并使用下面的scala代码在其中加载数据,这不是最好的解决方案 scala> val sqlContext = new org.apache.spark.sql.hive.HiveCo

我是spark的新手,尝试使用HortonWorks沙箱在TPCD基准表上运行一些查询。 在沙盒上通过shell或配置单元视图使用配置单元时没有问题。问题是,如果我想使用spark,我不知道如何连接到数据库。 如何在spark中使用配置单元数据库来运行查询? 到目前为止,我知道的唯一解决方案是手动重建每个表,并使用下面的scala代码在其中加载数据,这不是最好的解决方案

scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")
scala> sqlContext.sql("LOAD DATA LOCAL INPATH 'employee.txt' INTO TABLE employee")
scala> val result = sqlContext.sql("FROM employe SELECT id, name, age")
scala> result.show()

我也读了一些关于hive-site.xml的文章,但我不知道在哪里可以找到它,也不知道要对它进行什么更改才能连接到数据库。

使用Spark和HiveContext时,不需要连接到特定的数据库

您只需将“hive site.xml”文件复制到Spark conf文件夹(也可以创建一个符号链接)

然后,在Spark中,您可以做类似的事情(我不是scala用户,所以语法可能是错误的):


配置单元站点(和其他配置文件)位于您安装Hadoop二进制文件的位置。如果您使用的是沙箱,那么您需要的一切都应该在这里得到解答。最后几个命令从现有配置单元表查询
cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf/
val hc = new org.apache.spark.sql.hive.HiveContext(sc)
val result = hc.sql("SELECT col1, col2, col3 FROM dbname.tablename")
result.show()