如何使用SPARK查询HIVE?

时间:2018-11-15 02:41:58

标签: apache-spark hive

我正在尝试使用spark在配置单元表上运行查询。 我已经关注了很多互联网上的文章,但是没有成功。 我已经将hive-site.xml文件移动到了触发位置。

请您解释一下该怎么做?我正在使用Spark 1.6

谢谢。

请在下面找到我的代码。

import sqlContext.implicits._
import org.apache.spark.sql
val eBayText = sc.textFile("/user/cloudera/spark/servicesDemo.csv")
val hospitalDataText = sc.textFile("/user/cloudera/spark/servicesDemo.csv")
val header = hospitalDataText.first()
val hospitalData = hospitalDataText.filter(a=>a!=header)
case class Services(uhid:String,locationid:String,doctorid:String)
val hData = hospitalData.map(_.split(",")).map(p=>Services(p(0),p(1),p(2)))
val hosService = hData.toDF()
hosService.write.format("parquet").mode(org.apache.spark.sql.SaveMode.Append).save("/user/hive/warehouse/hosdata")

此代码在指定路径下创建了“ hosdata”文件夹,其中包含“镶木地板”格式的数据。

但是当我去蜂巢并检查是否创建了表时,我看不到任何表名为“ hosdata”。

所以我运行以下命令。

hosService.write.mode("overwrite").saveAsTable("hosData")
sqlContext.sql("show tables").show

显示下面的结果

+--------------------+-----------+
|           tableName|isTemporary|
+--------------------+-----------+
|             hosdata|      false|
+--------------------+-----------+

但是再次,当我签入蜂巢时,我看不到表'hosdata'

有人可以让我知道我错过了哪一步吗?

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式使用Spark查询Hive。

  1. 就像在Hive CLI中一样,您可以使用Spark SQL查询
  2. Spark-shell可用于运行spark类文件,您需要在其中定义变量,例如蜂巢,spark配置对象。 Spark Context-sql()方法允许您执行与可能在Hive上执行的查询相同的查询

性能调整绝对是一个重要的方面,因为您可以使用广播和其他方法来更快地执行。

希望这会有所帮助。

相关问题