如何将HiveQL查询转换为相应的DataFrame操作?

时间:2017-05-30 10:13:24

标签: apache-spark apache-spark-sql

在我的用例中,我在myRDD.map()函数中使用了hivecontext。我得到了java.lang nullpointerexception的错误。我意识到,在地图逻辑中不可能使用hiveContext。 hivecontext用于将hiveql查询激发到另一个表(conf)。 hiveContext.sql()。查询就像这样

select config_date, filefilter, family, id from mydb.conf where     
id == 178 and config_date < cast("2011-02-04 13:05:41.0" as 
timestamp) and family == "drf" order by config_date desc limit 1 

我决定在驱动程序代码中开始映射过程之前创建此表的数据框。并在地图逻辑中执行数据帧操作。基本上,想要通过数据帧进行方法调用,而不是使用hivecontext进行查询 可能吗?有人可以帮我在这里如何在数据框架上复制这个查询吗?

1 个答案:

答案 0 :(得分:0)

是的,完全可以将Hive查询转换为数据集。

您可以spark.sql(yourQueryHere)或重写查询以使用Spark SQL的数据集API。

只需使用spark.read.table("mydb.conf")加载您的Hie表,然后进行过滤和排序。

val conf = spark.
  read.
  table("mydb.conf").
  select("config_date", "filefilter", "family", "id").
  ... // you know the rest

然后,您可以{}向其他人join使用此数据集并应用联合转换,以避免在地图中使用hiveContext