我的代码:
add jar /home/edureka/Downloads/csv-serde-1.1.2.jar;
Create table loan(id int,loan_amt int,grade string)
row format serde 'com.bizo.hive.serde.csv.CSVSerde'
stored as textfile;
load data local inpath 'Desktop/LMS/Hive_Project/Loan Data.csv' into table loan;
select id,loan_amt,grade from loan
where grade="A"
sort by loan_amt desc
limit 5;
但我的结果是错误的。 我得到一些随机的值,这不是前五名
答案 0 :(得分:0)
select id,loan_amt as ,grade
from loan
where grade="A"
order by cast (loan_amt as int) desc
limit 5;
ORDER BY
(而不是SORT BY
)
排序方式与排序方式之间的差异
Hive支持SORT BY,它对每个reducer的数据进行排序 “order by”和“sort by”之间的区别在于前者保证了输出中的总顺序 而后者只保证在减速器内排序 如果有多个减速器,“排序依据”可能会给出部分有序的最终结果。https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy
将loan_amt
投放到int
<强>限制强>
此SerDe将所有列视为String类型 即使使用此SerDe创建具有非字符串列类型的表,DESCRIBE TABLE输出也会显示字符串列类型。
。从SerDe检索类型信息 要将列转换为表中所需的类型,可以在将CAST执行到所需类型的表上创建一个视图。