복붙노트

[HADOOP] HIVE는 셸을 사용하여 문자열을 구문 분석

HADOOP

HIVE는 셸을 사용하여 문자열을 구문 분석

나는 나의 관찰을 필터링하기 위해, 하이브로 문자열 변수를 구문 분석하는 데 사용하는 쉘 스크립트가 있습니다. 나는 스크립트 아래 하이브 코드를 모두 제공합니다.

다음 스크립트에서 나는 문자열 값을 갖는 변수를하고 난 하이브, 아래의 예로 구문 분석하려고 :

쉘 스크립트 :

name1='"Maria Nash"' *(I use a single quote first and then a double)*

hive --hiveconf name=${name1} -f t2.hql

하이브 코드 (t2.hql)

create table db.mytable as

SELECT *

FROM db.employees

WHERE emp_name='${hivevar:name}';

결론

정확하려면 최종 테이블이 만들어집니다하지만 어떤 관찰을 포함하지 않습니다. 직원 테이블하지만 EMP_NAME "마리아 내쉬"을 가지고 관찰이 포함되어 있습니다.

나는 쉘에서 제대로 문자열을 구문 분석하지 못하거나 내가 하이브 쿼리의 분석 변수를 처리하는 방법에 대한 올바른 구문을 따르지 않는 것으로 생각합니다.

나는 당신의 도움을 주셔서 감사합니다 것입니다!

해결법

  1. ==============================

    1.CLI를 사용하면 사용되지 않습니다

    CLI를 사용하면 사용되지 않습니다

    당신은 쉘 스크립트에서 직선을 사용할 수 있습니다

    이 같은 보일 것이다

    beeline << EOF
    
    !connect jdbc:hive2://host:port/db username password
    
    select * 
    from db.employees
    where emp_name = "${1}"
    
    EOF
    

    $ (1) 가정하면 스크립트의 입력이다.

    이것은 생산의 구현보다는 그것을 수행하는 방법의 예입니다. 일반적으로,

    당신이 한 줄에 그것을 할 수있는 점을 감안

    beeline -u jdbc:hive2://hostname:10000  -f {full Path to Script} --hivevar {variable}={value}
    
  2. from https://stackoverflow.com/questions/53082120/parse-strings-in-hive-using-shell by cc-by-sa and MIT license