在我的用例中,我在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进行查询 可能吗?有人可以帮我在这里如何在数据框架上复制这个查询吗?
答案 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
。