[HADOOP] 하이브 - LIKE 연산자
HADOOP하이브 - LIKE 연산자
나는 그 문제를 어떻게 다루는 지 알 수 없다.
이것은 내 데이터입니다.
Table1: Table2:
BRAND PRODUCT SOLD
Sony Sony ABCD 1233
Apple Sony adv 1233
Google Sony aaaa 1233
IBM Apple 123 1233
etc. Apple 345 1233
IBM 13123 1233
브랜드 및 총 판매량을 나타내는 표가있는 쿼리를 필터링 할 수 있습니까? 내 생각은 :
Select table1.brand, sum(table2.sold) from table1
join table2
on (table1.brand LIKE '%table2.product%')
group by table.1.brand
그건 내 생각 이었지만 항상 오류가 발생했습니다.
가장 큰 문제는 Like-Operator입니다. 아니면 다른 해결책이 있습니까?
해결법
-
==============================
1.두 가지 문제가 있습니다. 우선, 하이브에있는 JOIN은 평등 조건에서만 작동합니다. 그런 식으로는 작동하지 않습니다.
두 가지 문제가 있습니다. 우선, 하이브에있는 JOIN은 평등 조건에서만 작동합니다. 그런 식으로는 작동하지 않습니다.
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins
대신 where 절로 이동하려고합니다.
둘째, 같은 문장 자체에 문제가있는 것을 볼 수 있습니다. '% table2.product %'는 문자 그대로 '% table2.product %'문자열로 해석됩니다. 또한, 이것이 의도 된 것을 수행하고 있었다하더라도, 당신이 그것을 다른 방법으로 원할 때, 브랜드 안의 table2.product를 찾도록 노력할 것입니다. 의도 한 평가를 얻으려면 table1.brand의 내용에 와일드 카드를 추가해야합니다. 이를 위해 와일드 카드를 표현식에 연결해야합니다.
table2.product LIKE concat('%',table1.brand,'%'))
이렇게하면 '% table2.product %'대신 문자열 '% Sony %', '% Apple %'... 등을 평가하게됩니다.
당신이 원하는 것은 브랜든 벨 (Brandon Bell)의 질문입니다. 나는이 대답에 합병했습니다 :
SELECT table1.brand, SUM(table2.sold) FROM table1, table2 WHERE table2.product LIKE concat('%', table1.brand, '%') GROUP BY table1.brand;
-
==============================
2.JOIN없이이 작업을 수행 할 수 있어야합니다. 다음 쿼리를 참조하십시오.
JOIN없이이 작업을 수행 할 수 있어야합니다. 다음 쿼리를 참조하십시오.
SELECT table1.brand, sum(table2.sold) FROM table1, table2 WHERE table2.product LIKE concat('%', table1.brand, '%') GROUP BY table1.brand;
이것은
Apple 2466 IBM 1233 Sony 3699
입력 파일의 위치는 다음과 같습니다.
Sony Apple Google IBM
과
Sony ABCD 1233 Sony adv 1233 Sony aaaa 1233 Apple 123 1233 Apple 345 1233 IBM 13123 1233
from https://stackoverflow.com/questions/31340218/hive-like-operator by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 네임 스페이스 이미지 및 로그 편집 (0) | 2019.06.15 |
---|---|
[HADOOP] 메모리의 하둡 환원제 가치? (0) | 2019.06.15 |
[HADOOP] core-site.xml에 fs.default.name을 설정하면 HDFS가 Safemode로 설정됩니다. (0) | 2019.06.15 |
[HADOOP] Apache Spark 비대칭 데이터 처리 (0) | 2019.06.15 |
[HADOOP] hadoop java.io.IOException : namenode를 실행하는 중 -format (0) | 2019.06.15 |