java从配置单元表中复制,需要写出丢弃的记录和抓取计数

insrf1ej  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(276)

所以我们有一个etl进程,它从多个配置单元表中提取数据。我们的进程读取配置单元表,创建一个Dataframe,然后使用dropduplicates函数删除重复项。我想,在这个过程完成后,在hive中为一个报告过程复制它。是的,开销是一团乱,因为现在我们有两个独立的代码基,但是主etl进程不能有这个功能,因为它会使它慢得太多。我们需要此信息进行报告,稍后将在批处理中进行。无论如何,我需要一个sql语句来读取配置单元表,确定重复的键值是什么,并获取它们的计数。例如,如果一个特定的键值在表中有9条记录,则该值的重复数据消除计数将为8(9-1,因为我们将始终保留父记录)。然后跑过table,抓住那些数字:)

3pvhb19x

3pvhb19x1#

-- create a temp table with example values

CREATE TEMPORARY TABLE t1 (c1 string, c2 string, c3 string);
INSERT INTO TABLE t1
    VALUES('a','b','c'),('a','g','c'),('a','b','c'),('b','a','c'),
          ('c','a','b'),('a','b','c'),('a','g','c'),('e','b','a');

-- count duplicates

SELECT
        c1,
        c2,
        c3,
        COUNT(c1)-1 AS dup_count
FROM t1
GROUP BY
        c1,
        c2,
        c3

如果只想输出重复的行:

SELECT *
FROM (
SELECT
        c1,
        c2,
        c3,
        COUNT(c1)-1 AS dup_count
FROM t1
GROUP BY
        c1,
        c2,
        c3
) dups
WHERE dup_count > 0

相关问题