sql - 从 Impala 查询和从 Hive 查询的区别?
问题描述
我有一个 Hive 源表,其中包含:
select count(*) from dev_lkr_send.pz_send_param_ano;
--25283 lines
我正在尝试获取所有表格行并将它们放入数据框中,使用Spark2-Scala
. 我做了以下事情:
val dfMet = spark.sql(s"""SELECT
CD_ANOMALIE,
CD_FAMILLE,
libelle AS LIB_ANOMALIE,
to_date(substr(MAJ_DATE, 1, 19), 'YYYY-MM-DD HH24:MI:SS') AS DT_MAJ,
CLASSIFICATION,
NB_REJEUX,
case when indic_cd_erreur = 'O' then 1 else 0 end AS TOP_INDIC_CD_ERREUR,
case when invalidation_coordonnee = 'O' then 1 else 0 end AS TOP_COORDONNEE_INVALIDE,
case when typ_mvt = 'S' then 1 else 0 end AS TOP_SUPP,
case when typ_mvt = 'S' then to_date(substr(dt_capt, 1, 19), 'YYYY-MM-DD HH24:MI:SS') else null end AS DT_SUPP
FROM ${use_database}.pz_send_param_ano""")
当我执行dfMet.count()
它返回:46314
关于差异来源的任何想法?
编辑1:
从 Hive 尝试相同的查询返回与数据框中相同的值(我之前从 Impala UI 查询)。
有人可以解释一下区别吗?我正在研究 Hue4。
解决方案
一个潜在的差异来源是您的 Hive 查询正在从过时的元存储返回结果,而不是对表运行新计数。
如果您将 hive.compute.query.using.stats 设置为 true 并且该表已计算统计信息,那么它将从元存储返回结果。如果是这种情况,则可能是您的统计数据已过时,您需要重新计算它们。
推荐阅读
- python - 如何加快从 EMR PySpark Notebook 向 s3 写入数据帧的速度?
- ruby - Ruby 1.8.7 Mac OS Bigsur __rvm_make -j8'
- python - 每次运行代码时重命名一个变量(python)?
- python - 在 openerp odoo 中向 gtk 客户端发送自己的报告
- excel - 单元格上的工作表参考
- php - 如何将重复的键放入一个具有所有键值的键中
- javascript - 在 while 循环中更新 HTML 文本内容
- javascript - 在关闭并重新打开的 PrimeNG 对话框中绘制图表时,ngx-charts 线条消失
- r - 我可以使用 case_when (或其他任何东西)用非静态字符串编写吗?
- javascript - Laravel,将PDF从控制器发送到JS变量