1、解决spark有数据,tez读不到数据问题
递归子目录作为输入,得开启
mapreduce.input.fileinputformat.input.dir.recursive = true;
递归子目录作为输入,spark.sql.sources.recursiveFileLookup=true;
2、解决tez有数据,spark读不到的问题
spark.sql.hive.convertMetastoreParquet 用于控制是否使用 Spark 原生的 Parquet 实现。
true:使用 Spark 内置的 Parquet 数据源(更快、功能更全)
false:使用 Hive 的 SerDe 来读取 Parquet 文件
true(Spark 2.0+ 默认)false(Spark 1.x 默认)
3、解决with as 时候类似的 子句被接取不执行的问题。
set hive.optimize.cte.materialize.threshold=-1;
控制 Hive 是否将 CTE(WITH 子句)的结果物化(materialize)到临时表中,以避免重复计算。
4、解决无数据创建分区的问题
SET hive.exec.max.created.files = -1;
-- 问题SQL:没有数据也会创建分区元数据
INSERT INTO TABLE target_table PARTITION(dt='20251214')
SELECT * FROM source_table WHERE 1=0; -- 无数据
结果:
在Hive元数据中创建分区:dt=20251214
不创建HDFS目录:/user/hive/warehouse/target_table/dt=20251214/
查询时报错:Partition not found 或 File not found