2

我是 spark 新手,并尝试使用 HortonWorks Sandbox 在 tpcds 基准表上运行一些查询。 http://www.tpc.org/tpcds/ 在沙盒上通过 shell 或 hive-view 使用 hive 没有问题。问题是如果我想使用 spark,我不知道如何连接到数据库。如何在 spark 中使用 hive 数据库来运行查询?到目前为止,我知道的唯一解决方案是手动重建每个表并使用以下 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 的信息,但我不知道在哪里可以找到它以及要对其进行哪些更改以连接到数据库。

4

1 回答 1

3

使用 Spark 和 HiveContext 时无需连接到特定数据库。

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

cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf/

然后,在 Spark 中,您可以执行类似的操作(我不是 scala 用户,因此语法可能有误):

val hc = new org.apache.spark.sql.hive.HiveContext(sc)
val result = hc.sql("SELECT col1, col2, col3 FROM dbname.tablename")
result.show()
于 2016-10-03T14:10:14.637 回答