首页 > 解决方案 > Hive hql 到 Spark sql 的转换

问题描述

我需要将 hql 转换为 spark sql。我正在使用以下方法,因此我没有看到性能上有太大变化。如果有人有更好的建议,请告诉我。

蜂巢-

create table temp1 as select * from Table1 T1 join (select id , min(activity_date) as dt from Table1 group by id) T2 on T1.id=T2.id and T1.activity_date=T2.dt ;
create table temp2 as select * from temp1 join diff_table

我有大约 70 个这样的内部配置单元临时表,源 Table1 中的数据约为 18 亿,没有分区和 200 个 hdfs 文件。

火花代码 - 运行 20 个执行器,5 个执行器核心,10G 执行器内存,纱线客户端,驱动程序 4G

import org.apache.spark.sql.{Row,SaveMode,SparkSession}
val spark=SparkSession.builder().appName("test").config("spark.sql.warehouse.dir","/usr/hive/warehouse").enableHiveSupport().getOrCreate()
import spark.implicit._
import spark.sql

val id_df=sql("select id , min(activity_date) as dt from Table1 group by id")

val all_id_df=sql("select * from Table1")

id_df.createOrReplaceTempView("min_id_table")

all_id_df.createOrReplaceTempView("all_id_table")

val temp1_df=sql("select * from all_id_table T1 join min_id_table T2 on T1.id=T2.id and T1.activity_date=T2.dt")

temp1_df.createOrReplaceTempView("temp2")

sql("create or replace table temp as select * from temp2")

标签: apache-sparkhiveapache-spark-sql

解决方案


推荐阅读