从 spark 直接调用 .hql 文件
Posted
技术标签:
【中文标题】从 spark 直接调用 .hql 文件【英文标题】:Calling .hql file direclty from spark 【发布时间】:2018-05-22 16:14:35 【问题描述】:我试图运行如下所示的 hql 文件,但收到错误 noviablealtexception
val QUERY = fromFile(s"$SQLDIR/select_cust_info.hql").getLines.mkString
sqlContext.sql(s"$QUERY").show()
你能帮忙吗,如何运行它?
根据要求,select_cust_info.hql 应该是这样的
set hive.execution.engine=mr;
--new records
insert into cust_info_stage
select row_number () over () + $hiveconf:maxid as row_id , name, age, sex, country , upd_date, create_date
from $hiveconf:table r
left join cust_dim d on id=uid
where not exists ( select 1 from cust_info c where c.id=r.id);
--upd record
insert into cust_info_stage
select row_id , name, age, sex, country , upd_date, create_date
from $hiveconf:table r
inner join cust_info_stage on
left join cust_dim d on id=uid
where not exists ( select 1 from cust_info c where c.id=r.id);
!quit
上面的hql只是一个示例,我想从sqlContext中调用这样的hqls。
现在我要检查的下一个级别是,如果 .hqls 中定义了 hiveconf,如何在 sqlContext 中传递这些变量。
【问题讨论】:
你的总部怎么样?有cmets吗?哪条线抛出错误?请生成minimal reproducible example 供我们使用。谢谢。 How to execute .sql file in spark using python的可能重复 先生按要求添加,hql 可以很大,200 行等。 【参考方案1】:您可以尝试以下代码在 pyspark v2+ 中运行 hql 文件
from pyspark.sql import SparkSession
from pyspark.sql import SQLContext
sc =SparkContext.getOrCreate()
sqlCtx = SQLContext(sc)
with open("/home/hadoop/test/abc.hql") as fr:
query = fr.read()
print(query)
results = sqlCtx.sql(query)
【讨论】:
以上是关于从 spark 直接调用 .hql 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在spark中使用transform python udf执行hql脚本?
hive on spark hql 插入数据报错 Failed to create Spark client for Spark session Error code 30041
hive on spark hql 插入数据报错 Failed to create Spark client for Spark session Error code 30041