-1
하이브에서 하이브 0.13에 대한 덮어 쓰기 삽입 작업을 수행하려고합니다. 아래는 내 쿼리입니다HIVE : 유니온 양쪽의 스키마가 일치해야합니다. 열 _c0
INSERT OVERWRITE TABLE TABLE_A
SELECT
A.ADDRESS1=B.ADDR_LINE_1,
A.ADDRESS2,
A.ADDRESS3=CONCAT(B.CITY, ', ', B.STATE, ' ', B.POSTAL_CDE) ,
A.STORETYPE
FROM
P.STUDENT A
JOIN
`default.CUSTOMER` B ON A.REGION = B.SHIP_TO_LOCATION_NUM
AND A.STORENUMBER = B.SHIP
UNION ALL
SELECT
A.ADDRESS1,
A.ADDRESS2,
A.ADDRESS3,
A.STORETYPE=cast(B1.id AS string)
FROM
`P.STUDENT` A
JOIN
R.RTL B1 ON A.REGION = B1.SHIP_TO_LOCATION_NUM
AND A.STORENUMBER = B1.SHIP ;
After the execution i receive an error saying:
FAILED: SemanticException 36:0 Schema of both sides of union should match: Column _c0 is of type boolean on first table and type string on second table. Error encountered near token 'P.STUDENT'.
저는 조인의 모든 데이터 유형이 문자열임을 발견했습니다. 그리고 B1.id
에 대해서는 문자열 cast(B1.id AS string)
으로 캐스팅합니다. 아무도 나 에게이 쿼리와 함께 문제를 말할 수 있습니다. 0.13 하이브를 사용하고 있습니다. 위의 질의에 A.ADDRESS1=B.ADDR_LINE_1,
문이 boolen을 반환처럼
감사 질의 작품 아래